2017-03-09 51 views
1

我已經通過,但與我的問題其他問題要問我解決方案力的工作去了。這是我的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); 
    } 
}); 

這是我回調函數:

function jsonpcallback(data){ 
console.log(data); 
} 

我得到了一個名爲解析錯誤錯誤。有人可以告訴我我要去哪裏嗎?來自服務器的響應沒有任何錯誤。

編輯: 添加的服務器響應:

[ 
    { 
    "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 
    } 
] 
+0

解析錯誤:試試這個?至少告訴我們它指的是 –

+0

我在錯誤函數中獲取它!當狀態顯示使用警報它說解析錯誤 – Jois

+0

你確定你正在返回JSONP數據,而不是JSON?看到響應文本和/或服務器端代碼將在這裏有所幫助 –

回答

1

呼叫的響應是JSON,而不是JSONP。它們不可互換。要修復此集合dataType'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); 
    } 
}); 
+0

我在執行此操作時遇到了跨域權限被拒絕的錯誤。但服務器已啓用跨域權限 – Jois

+0

你說你已經添加了跨域權限,但是他們無法正確工作,因爲你有這個錯誤。您需要在響應中添加CORS標頭。 –

+0

嘿我改變了我的代碼到你的答案我沒有得到任何跨域錯誤,但我仍然得到解析錯誤 – Jois