我正在使用处理程序充当带有字符串的服务器(实际上是 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。