尝试从restful webservice检索json时标签无效

时间:2012-02-16 10:00:00

标签: jquery html5 cordova

在firebug上运行此代码时,在控制台中它将显示无效标签,并且我的成功回调也不会触发。在摆弄谷歌关于答案的方式后,我发现当使用jsonp我需要解析结果而且我需要回调。现在,我正在撞墙,寻找可能的答案。你能帮帮我这个吗?感谢。

    $.ajax( {
        url: 'http://localhost:8732/Service1/data/10',
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        processdata:true,
        jsonpCallback: 'mycallback',
        success : function(data) {

           var json = $.parseJSON(data);
           $('#items').html(json);
           alert(json);

        },
        error : function(req, status, ex) {

          alert("Lol" + ex);

        }
        });
      }

同样alert("Lol"+ex)将提示LoljQuery16403233689395911671_1329386795307未被称为“

2 个答案:

答案 0 :(得分:1)

  

<强> jsonpString

     

覆盖jsonp请求中的回调函数名称。这个值   将在'callback =?'中使用而不是'callback'的一部分   在url中查询字符串。所以{jsonp:'onJSONPLoad'}会导致   'onJSONPLoad =?传递给服务器。从jQuery 1.5开始,设置   jsonp选项为false可防止jQuery添加“?回调”   字符串到URL或尝试使用“=?”转型。在   在这种情况下,您还应该显式设置jsonpCallback设置。   例如,{jsonp:false,jsonpCallback:“callbackName”}

     

jsonpCallbackString,功能

     

指定JSONP请求的回调函数名称。这个值   将用于代替自动生成的随机名称   jQuery的。最好让jQuery生成一个唯一的名称   使管理请求更容易,并提供回调和错误   处理。您可能希望在要启用时指定回调   更好的浏览器缓存GET请求。从jQuery 1.5开始,你也可以   使用一个函数进行此设置,在这种情况下的值为   jsonpCallback设置为该函数的返回值

代码示例:

<!DOCTYPE html>
<html>
<head>
  <style>img{ height: 100px; float: left; }</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div id="images">

</div>
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });</script>

</body>
</html>

参考文献:http://api.jquery.com/jQuery.getJSON/

编辑:代码2

$.ajax({
    url: 'http://server:port/path/to/file',
    type: 'GET',
    dataType: 'jsonp',
    cache: false,
    jsonp: '$callback',
    error: function (x, t, r) { alert(x.response.message); },
    success: function (data) {
        $.each(data.d.results, function (i, val) {
            $("#results").append("<div>" + val.name + "</div>");
        });
    }
});

答案 1 :(得分:0)

json在http://localhost:8732/Service1/data/10有效吗?坚持:http://jsonlint.com/。你也可以尝试捕捉错误:

var request = $.ajax( {
    ...
});

request.error(function(error) {
    console.log(error);
});