使用$ .ajax和jsonp调用C#Web服务

时间:2013-04-24 20:57:50

标签: ajax jquery jsonp

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

现在,我需要从我的页面调用该服务。不幸的是,Web服务与我的网页位于不同的计算机上,因此我需要将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参数与success参数之间有什么区别?如果我不声明数据,它将不允许我将它用作参数的参数。如何指定将包含返回结果的变量的名称?

感谢您的耐心

1 个答案:

答案 0 :(得分:2)

你有:

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

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

如果你只提供要调用的方法,它会将它作为函数应用于返回的对象。

看起来像这样:

jsonpCallback : jsonpCallback,
success : jsonpCallback