我正在使用处理程序充当带有字符串(实际上是 xml,但我正在尝试字符串)的服务器和我的 Silverlight 应用程序之间的代理。我已经编写了处理程序,它正确地收集了字符串(xml)。我遇到的问题是将该字符串从 JSON 转换为 javascript 可以传递回我的 Silverlight 代码的字符串。
Javascript:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
var xmlReturn = new String("");
function xmlStart() {
$.getJSON('xmlProxy.ashx', function (data) {
setXml(data);
});
}
function setXml(data) {
xmlReturn = data;
}
function getXml() {
alert(xmlReturn);
return xmlReturn;
}
银光:
private void button1_Click(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Invoke("xmlStart");
string test = (String)HtmlPage.Window.Invoke("getXml");
textBox1.Text = test;
}
以防万一处理程序代码(为了安全起见,取出了baseurl):
namespace HttpHandler_Proxy
{
public class xmlProxy : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
WebClient getCap = new WebClient();
string baseurl = "some_url";
string response = getCap.DownloadString(baseurl);
context.Response.ContentType = "application/json";
context.Response.Write(response);
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
我对 Javascript 和 jQuery 都是相对论新手,所以这可能是一个微不足道的问题,对此我深表歉意。在此版本的代码中,它从未将 xmlReturn
设置为 ""
我已经完成了其他版本,但代码总是以 null/undefined/""的形式返回到 Silverlight。
最佳答案
您的内容类型设置为 json,但您似乎没有进行任何编码,即将服务器的响应转换为有效的 json。尝试添加类似的内容:
response = new JavaScriptSerializer().Serialize(response);
关于c# - 将字符串从 IHttpHandler 传递到 Javascript,然后传递到 Silverlight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13615570/