1

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

4

2 回答 2

0

如果您当时不打算将该字符串视为 json,为什么不尝试使用$.load而不是。getJSON

编辑

首先,您应该检查data成功回调 (console.log(data)) 中的值。确保您的服务器端代码返回您想要的内容。

于 2012-11-28T22:57:28.447 回答
0

您的内容类型设置为 json,但您似乎没有进行任何编码,即将来自服务器的响应转换为有效的 json。尝试添加类似:

response = new JavaScriptSerializer().Serialize(response);
于 2012-11-29T00:07:16.723 回答