Javascript JSONP ajax回调失败

Javascript JSONP ajax回调失败,javascript,ajax,jsonp,Javascript,Ajax,Jsonp,我在本地试驾上运行了以下脚本。它导入一个JSON文件并构建一个网页,但由于某些原因,在处理数据时出现了错误。没有显示任何数据 但每当我使用(相同的)硬编码数据时,我就会得到我想要的结果。所以这让我觉得这与我处理JSON导入的方式有关 这是我的AJAX回调: getGames: function(fn) { $.ajax({ type: "GET", url: App.Config('webserviceurl')+'games-payed.js'

我在本地试驾上运行了以下脚本。它导入一个JSON文件并构建一个网页,但由于某些原因,在处理数据时出现了错误。没有显示任何数据

但每当我使用(相同的)硬编码数据时,我就会得到我想要的结果。所以这让我觉得这与我处理JSON导入的方式有关

这是我的AJAX回调:

getGames: function(fn) {
     $.ajax({
          type: "GET",
          url: App.Config('webserviceurl')+'games-payed.js',
          dataType: "jsonp",
          success: function (data) {
              console.log('streets', data);
              if(fn){
                  fn(data);
              }
          },
          error: function (msg) {
              if(fn){
                  fn({status:400});
              }
          }
     });
}
这段代码不起作用,我的控制台也没有收到任何错误

当我加载硬编码的数据时,它工作正常:

getGames: function(fn) {
     var games = App.Config('dummyGames');

     if(fn){
          fn(games);
     }
}  
我的AJAX回调有什么问题吗

编辑: JSON文件如下所示:

jsonp1({
    "status": "200",
    "data": [
        {
            "id": "1",
            "title": "Title 1",
            "publishDate": "2013-03-27T15:25:53.430Z",
            "thumbnail": "images/thumbs/image_game1.png",
            "html5": "http://mysite.com/index.html"
        },
        {
            "id": "2",
            "title": "Title 2",
            "publishDate": "2013-03-20T15:25:53.430Z",
            "thumbnail": "images/thumbs/image_game2.png",
            "html5": "http://mysite.com/index.html"
        },
        {
            "id": "3",
            "title": "Title 3",
            "publishDate": "2013-03-18T15:25:53.430Z",
            "thumbnail": "images/thumbs/image_game3.png",
            "html5": "http://mysite.com/index.html"
        }

    ]
});

在您的示例中,我看到您将json数据包装在
jsonp1
中。我想那是一个固定的名字。如果是这种情况,请尝试以下方法:

getGames: function(fn) {
     $.ajax({
          type: "GET",
          url: App.Config('webserviceurl')+'games-payed.js',
          jsonp: false,
          jsonpCallback:"jsonp1",
          dataType: "jsonp",
          success: function (data) {
              console.log('streets', data);
              if(fn){
                  fn(data);
              }
          },
          error: function (msg) {
              if(fn){
                  fn({status:400});
              }
          }
     });
}
请注意
jsonpCallback:“jsonp1”
jsonp:false
。原因是:默认情况下,jquery将自动随机生成回调函数名,并将
?callback=generatedFunctionName
附加到url的末尾。由于callback参数,服务器端的代码可以使用相同的函数名在浏览器上调用回调

在您的情况下,您使用的是固定的函数名(jsonp1),因此您必须:

  • 使用
    jsonpCallback=“jsonp1”
  • 设置
    jsonp=false
    以防止jQuery向URL添加“回调”字符串或尝试使用“=?”进行转换

如果登录错误回调,您是否在控制台中看到任何内容?“游戏付费”是打字错误吗?您在浏览器的“网络”选项卡中看到了什么?能否向我们展示一下
games payed.js
的外观?关于付款:tldr;使用paidAbout“payed”命名,这是我们从客户机获得的服务,因此我无法控制命名:)我添加了JSON文件的一个片段。我编辑后将问题的标题改为“JSONP ajax回调失败”,而不是“JSON ajax回调失败”,因为这个问题更多的是关于JSONP的。希望你能接受