2017-03-09 7 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

JSONではなくJSONPデータを返すのですか?応答テキストおよび/またはサーバー側コードを参照すると、 –

答えて

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

関連する問題