0

我正在使用 ajax 调用从托管在某个服务器上的 WebService 执行 POST 和 GET 操作。

由于跨域问题,我正在使用 dataType:"jsonp"。我可以在 fiddler 上看到 Web 服务发送的数据。我想访问从服务中获得的数据,但我不知道该怎么做。

这是我的ajax调用:

    $.ajax({
        type: method,
        url: "url",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        jsonp: false,
        jsonpcallback:function(data){},            //What am I supposed to write here so that I can get the JSON data from Padded json
        success: successHandler,
        error: errorHandler
    });

这是我从服务收到的 json 响应的近似值:

    {"Ideas":[
               {"Message":null,"IdeaId":1},
               {"Message":null,"IdeaId":1}
             ]
    }  

任何形式的帮助将不胜感激。我搜索了很多帖子,但无法通过。

先感谢您。

4

4 回答 4

1

jsonpcallback:function(data){},//我应该在这里写什么,以便我可以从 Padded json 获取 JSON 数据

通常,什么都没有。如果您的 JSONP 服务真的不典型,您只需要指定回调。如果你指定它,它需要是一个字符串

同样,您不应设置jsonp: false,因为那样会阻止生成回调参数。

您确实需要一个成功处理程序来处理数据。拥有一个错误处理程序也是一个好主意。

function successHandler(data) {
    console.log(data)
}

function errorHandler(jqXHR, errorType, exception) {
    console.log(errorType, exception);
}

$.ajax({
    url: "url", // Make this the real URL!
    dataType: "jsonp",
    success: successHandler,
    error: errorHandler
});

然后 JSONP 处理程序需要实际返回 JSONP

服务器返回的Content-Type标头应该是application/javascript

身体应该是:

  • callback查询字符串中键的值
  • (
  • 一些 JSON
  • );

例如

jqueryCallback123u54yiyioeuioey8({ "foo": "bar" });
于 2012-11-16T22:13:14.193 回答
0

我不是一个出色的脚本编写者,但我在我的项目中使用了 AJAX。试试这个,这就是它对我的工作方式。

$.ajax({
    type: method,
    url: "url",
    dataType: "jsonp",
    success: function(data){
        console.log(data);
    }
});
于 2012-11-16T21:51:59.913 回答
0

你需要使用你的控制台。例如firebug,如果您使用firefox, 或chrome's development console.

在那里,您应该会看到代码中的错误。

ajax()

jquery 中的函数需要success: function(data){ // do something with the data } 回调。

console.log(//some data) 

用于在脚本的不同点记录各种数据。

所以

$.ajax({
    type: method,
    url: "url",
    dataType: "jsonp",
    success: function(data){
    console.log(data);
}

});

这不是一个坏主意。

于 2012-11-16T22:05:12.493 回答
0

我以这种方式启动并运行它:

<script type="text/javascript">

  var jsonpCallback;

  function checkDocId() {
    // AJAX request
    $.ajaxSetup({ cache: false });

    jsonpCallback = function(data) {
      $("#result").html(data.html);
    };

    $.ajax({
      type: "GET",
      url: "/secudok/ws/rest/checkdocid/jsonp/" + encodeURIComponent($("#docId").val()),
      dataType: "jsonp",
      jsonpCallback: "jsonpCallback",
      crossDomain: true
    });
  }

</script>

服务器返回包装到回调函数中的数据:function({JSON})。

jsonpCallback({"html":"<table>data</table>\n"})

在我的示例中,我们使用 HTML,但也可以是 JSON

yourCallbackName({"a":"1"; "b":"2"})
于 2012-11-16T22:07:12.217 回答