【问题标题】:Is there a way to return JSON rendered by javascript through ajax call有没有办法通过ajax调用返回由javascript呈现的JSON
【发布时间】:2012-01-06 03:49:38
【问题描述】:

我有一种情况,我必须运行一些 javascript 并从我的站点在客户端站点上获得响应,并且由于跨域脚本安全性,我正在尝试考虑执行此操作的最佳方法。 我可以在客户端页面上放置一个 sn-p 代码。 我可以随意修改自己的网站。

一种选择是通过 iframe 打开页面,让他们网站上的 sn-p 运行获取响应并设置一个 cookie,我可以轮询该 cookie 以获取来自...的响应...哎呀...

我一直在想不同的方法来做到这一点,并且我正在努力发挥创造力。我是一个有一点 javascript 经验的后端人员,但不需要处理跨域的东西。如有任何帮助,我将不胜感激。 谢谢,

【问题讨论】:

    标签: javascript ajax cross-domain


    【解决方案1】:

    您可以在您的情况下使用JSONP

    可以找到 JQuery 的示例here

    【讨论】:

    • JSONP 将适合您的目的。您需要在服务器中进行更改以支持 JSONP。基本上,您必须将 JSON 对象包装为回调函数的参数——这就是 JSONP。如果您需要更多信息,请告诉我
    【解决方案2】:

    在客户端使用您的 sn-p 动态创建 iframe - 然后您将处于客户端域沙箱中,并且能够向您的站点发送请求

    【讨论】:

    【解决方案3】:

    也许您可以通过 ajax 调用调用 Web 服务并通过以下方式返回 JSON 字符串..

    $.ajax({
                type: "POST",
                url: "JSON.asmx/Getdata",
                data: {},
                contentType: "text/javascript; charset=utf-8",
                ContentLength: 15000,
                dataType: "text",
                async: true,
                // timeout:10000,
                success: function (msg) {
                    asmxdata(msg);
                    return false;
                },
                error: function (xhr, ajaxOptions, thrownError, request, error) {
                    alert('xrs.status = ' + xhr.status + '\n' +
                                'thrown error = ' + thrownError + '\n' +
                                 'xhr.statusText = ' + xhr.statusText + '\n' +
                                'request = ' + request + '\n' +
                                'error = ' + error);
                    return false;
    
                }
            });
    

    然后在 Web 服务调用成功后(即此处的 asmxdata() 方法),您可以通过以下方式将 JSON 字符串评估为 JSON 对象:

    function asmxdata(data) {
    var JObject = eval('(' + data + ');');
    }
    

    给控件赋值

    document.getElementById('lblfirstname').value = JObject.Table[i].FirstName;
    

    如果有什么不清楚的地方请评论。

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多