【问题标题】:Calling C# web service using $.ajax with jsonp使用 $.ajax 和 jsonp 调用 C# Web 服务
【发布时间】:2013-04-18 14:20:27
【问题描述】:

我需要将存储在文件中的数字列表带入网页。 我用 Visual Studio C# 编写了一个 Web 服务来读取文件并响应内容。如果我将 Web 服务的 URL 放入浏览器 http://MyComputer /wcfService3_deploy/RestServiceImpL.svc/json/123 它会显示一个 json 结果:{"JSONDataResult":"9781770494138"}(文件中只有一个数字)。

现在,我需要从我的页面调用服务。不幸的是,网络服务与我的网页在不同的计算机上,所以我需要将 jsonp 与 ajax 一起使用。

当我尝试通过 javascript 调用 Web 服务时,它永远无法访问该服务。我在调用中添加了一个错误参数,它报告“[object object] error”

function myFunction() {
var data = "datatext";
document.getElementById("response").innerHTML = "In MyFunction";
$.ajax({
     type : "GET",
     datatype : "jsonp",
     url : "http://MyComputer/wcfService3_deploy/RestServiceImpL.svc/json/123?callback=jsonpCallback",
     crossDomain : "true",
     jsonpCallback : jsonpCallback(data),
     success : jsonpCallback(data)

});
 /*document.getElementById("response").innerHTML = "AfterAjax";*/
};



function jsonpCallback(data) {
      document.getElementById("response").innerHTML =data;
    };

</script>

<p id="response">Old Text</p>
<button type="button" onclick="myFunction()">Click Me!</button>

我知道我在这里有太多次 jsonpCallback,并且将数据声明为变量没有意义。将回调放在 url 中与 jsonpCallback 参数与成功参数有什么区别?如果我不声明数据,它不会让我将它用作参数的参数。如何指定包含返回结果的变量的名称?

感谢您的耐心等待

【问题讨论】:

  • 您可能想从 $.ajax 调用中的两个 jsonpCallback 中删除 (data)

标签: ajax jquery jsonp


【解决方案1】:

你有:

 jsonpCallback : jsonpCallback(data),
 success : jsonpCallback(data)

为了扩展 David 的评论,您的回调设置是在构建回调时调用 jsonpCallback(data),并将“jsonpCallback”和“success”定义为该函数的结果。

如果你只是给它提供要调用的方法,它会将它作为一个函数应用到返回的对象上。

看起来像这样:

jsonpCallback : jsonpCallback,
success : jsonpCallback

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 2014-06-22
    • 2012-09-14
    • 2015-08-22
    • 2013-05-05
    • 1970-01-01
    • 2011-01-14
    • 2012-02-11
    相关资源
    最近更新 更多