【问题标题】:How to call external webservice using jquery "jsonp"?如何使用 jquery“jsonp”调用外部 web 服务?
【发布时间】:2010-10-18 07:17:20
【问题描述】:

我之前有一个问题can jquery ajax call external webservice?


和一些优秀的开发人员回答我使用 jsonp,但我不知道如何使用它,我正在尝试使用此代码调用我的服务:

$.ajax({
            type: "POST",
            url: "http://localhost:1096/MySite/WebService.asmx?callback=?",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "jsonp",
            success: function(msg) {alert(msg);}
            });


这是我的服务代码:

[WebMethod]
public string HelloWorld() {
    return "Hello World " ;
}


谁有例子或可以为我解释这个问题?

更新
我又把代码写成了这样:

$.getJSON("http://localhost:1096/YourShoppingTest1/WebService.asmx/HelloWorld?jsonp=?",{name:"test"},
    function(data){
    alert(data.x);
    });


和这样的服务:

[WebMethod]
public string HelloWorld(string name)
{
    return "( {\"x\":10 , \"y\":100} )";
}


但是回来时总是给我这个错误:“missing ; before statement [打破这个错误] ( {"x":10 , "y":100} )"

永远不要调用成功函数,有人可以帮忙吗?

【问题讨论】:

  • 如果其他问题的答案对您没有帮助,您为什么要接受它?您应该继续询问您的旧问题并关注该主题。
  • 因为他们这样回答我:$.getJSON 正在工作,但我问的是另一种使用 $.ajax 的方式

标签: asp.net javascript jquery web-services


【解决方案1】:

我遇到了类似的问题,很遗憾我手头没有代码。

凭记忆:

见:What are some good examples of JQuery using JSONP talking to .net? & What is the best way to call a .net webservice using jquery?

【讨论】:

    【解决方案2】:

    JSONP 的重点是 P! P 与填充一样。您正在使用函数调用填充 JSON 对象文字 - 在调用页面上调用一个函数,将数据对象作为参数。

    即如果您请求网络服务,请在查询字符串中发送所需的回调函数名称

    ...service/?callback=hello
    

    然后服务应该回答(使用适当的 mime 类型):

    hello({a: 17, b: 4117});
    

    如需更深入的解释,请参阅: http://www.stpe.se/2008/10/cross-site-data-retrieval-using-jsonp/

    【讨论】:

      【解决方案3】:

      您不能使用 JSONP 发出 POST 请求,只能使用 GET(因为 <script src="..."> 获取资源)。

      【讨论】:

        【解决方案4】:

        Hezil 的代码对我有用,但我不得不将服务器代码更改为:

        $data = '{"name" : "hello world"}'; echo $_GET['callback'] . '(' . $data . ');';
        

        注意“回调”而不是“jsoncallback”。

        【讨论】:

          【解决方案5】:

          首先你应该在你的网络服务器中添加 jsonp ('callback') 像 $_GET['callback']

          第二,不要忘记';'在输出脚本之后

          $data = '{"name" : "hello world"}';
          echo $_GET['jsoncallback'] . '(' . $data . ');';
          

          现在您可以找出为什么会出现“缺少 ; before statement”问题。

          html:

          $.getJSON({"http://localhost:1096/MySite/WebService.asmx?callback=?",
                  function(data){alert(data);}
                  });
          

          【讨论】:

            猜你喜欢
            • 2012-06-06
            • 1970-01-01
            • 2013-07-02
            • 2015-01-03
            • 2012-02-11
            • 2012-04-17
            • 2013-04-18
            • 2012-09-14
            相关资源
            最近更新 更多