Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery$.ajax出现数据类型解析错误_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript Jquery$.ajax出现数据类型解析错误

Javascript Jquery$.ajax出现数据类型解析错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我已经讨论了与我的问题相关的其他问题,但解决方案对我来说并不奏效。这是我的ajax代码: $.ajax({ url:'http://localhost:8080/items?callback=?', type:'GET', //the name of the callback function jsonp: "jsonpcallback", dataType:'jsonp', success:function(data){

我已经讨论了与我的问题相关的其他问题,但解决方案对我来说并不奏效。这是我的ajax代码:

   $.ajax({
     url:'http://localhost:8080/items?callback=?',
     type:'GET',
     //the name of the callback function
     jsonp: "jsonpcallback",
     dataType:'jsonp',

     success:function(data){
        alert("hello" + data);
         var length = data.length;
         for(var i=0;i<length;i++){
           var object = data[i];
           var item = new Item(object.id,object.name,object.price,object.quantity);
           $("#items-container").append(getItemHtml(item.id));

         }

     },
     error:function(xhr,status,error){
        alert(status);
     }
 });
我得到一个名为parse error的错误。谁能告诉我哪里出了问题???来自服务器的响应没有任何错误

编辑: 添加了服务器响应:

 [
  {
    "id": 1,
    "name": "Snickers",
    "price": 1.5,
    "quantity": 7
  },
  {
    "id": 2,
    "name": "M&M's",
    "price": 1.25,
    "quantity": 8
  },
  {
    "id": 3,
    "name": "Almond Joy",
    "price": 1.25,
    "quantity": 11
  },
  {
    "id": 4,
    "name": "Milky Way",
    "price": 1.65,
    "quantity": 3
  },
  {
    "id": 5,
    "name": "Payday",
    "price": 1.75,
    "quantity": 2
  },
  {
    "id": 6,
    "name": "Reese's",
    "price": 1.5,
    "quantity": 5
  },
  {
    "id": 7,
    "name": "Pringles",
    "price": 2.35,
    "quantity": 4
  },
  {
    "id": 8,
    "name": "Cheezits",
    "price": 2,
    "quantity": 6
  },
  {
    "id": 9,
    "name": "Doritos",
    "price": 1.95,
    "quantity": 7
  }
]

调用的响应是JSON,而不是JSONP。它们不能互换。要将此集合
数据类型
修复为
'json'
,并删除对JSONP回调的引用。试试这个:

$.ajax({
  url: 'http://localhost:8080/items',
  type: 'GET',
  dataType: 'json',
  success: function(data) {
    console.log(data); // only for testing

    var length = data.length;
    for (var i = 0; i < length; i++) {
      var object = data[i];
      var item = new Item(object.id, object.name, object.price, object.quantity);
      $("#items-container").append(getItemHtml(item.id));
    }
  },
  error:function(xhr, status, error) {
    alert(status);
  }
});
$.ajax({
网址:'http://localhost:8080/items',
键入:“GET”,
数据类型:“json”,
成功:功能(数据){
console.log(数据);//仅用于测试
变量长度=data.length;
对于(变量i=0;i
解析错误在哪里?至少告诉我们它指的是哪一行,我在错误函数中得到它!当使用alert显示状态时,会显示parse Error您确定返回的是JSONP数据,而不是JSON吗?查看响应文本和/或服务器端代码会有所帮助。您还可以添加部分响应代码吗?它可能与您的响应数据有关。jsonp不是一个数据模型。您可以通过ajax请求传递它,并用它包装json数据。因此,当您发送类似于您的请求时,您的数据响应应该返回jsonpcallback({“data”:“value”…})。当我这样做时,我收到了跨域权限拒绝错误。但服务器已启用跨域权限您说您已添加跨域权限,但这些权限无法正常工作,您可能会出现此错误。您需要在响应上添加CORS头。嘿,我将代码更改为您的答案我没有收到任何跨域错误,但我仍然收到解析错误道歉-我没有删除
回调
querystring参数。立即重试如果您检查控制台的“网络”选项卡,您应该能够看到失败的请求,这将为您提供比jQuery
alert()
更详细的错误描述。
$.ajax({
  url: 'http://localhost:8080/items',
  type: 'GET',
  dataType: 'json',
  success: function(data) {
    console.log(data); // only for testing

    var length = data.length;
    for (var i = 0; i < length; i++) {
      var object = data[i];
      var item = new Item(object.id, object.name, object.price, object.quantity);
      $("#items-container").append(getItemHtml(item.id));
    }
  },
  error:function(xhr, status, error) {
    alert(status);
  }
});