JQuery Getjson طلب العودة فارغة على طلب صالح
سؤال
أحاول الاستيلاء على بعض JSON من خدمة Apple iTunes JSON. الطلب بسيط:http://ax.phobos.apple.com.edgesuite.net/webobjects/mzstoreservices.woa/wa/wssearch؟term=jac&limit=25.
إذا قمت بزيارة عنوان URL في متصفحك، فسترى بعضا جيدا (مدعومة من قبل JSONLINT.COM) JSON. عندما أستخدم JQuery التالية لإجراء الطلب، ومع ذلك، لا يجد الطلب شيئا:
$("#soundtrack").keypress(function(){
$.getJSON("http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch",{'term':$(this).val(), 'limit':'25'}, function(j){
var options = '';
for (var i = 0; i < j.results.length; i++) {
options += '<option value="' + j.results[i].trackId + '">' + j.results[i].artistName + ' - ' + j.results[i].trackName + '</option>';
}
$("#track_id").html(options);
});
});
يرى Firebug الطلب، ولكن يتلقى فقط استجابة فارغة.
سيكون موضع تقدير أي مساعدة هنا، وأنا في نهاية بلدي في محاولة لحلها. يمكنك عرض البرنامج النصي هنا:http://rnmtest.co.uk/gd/drives_admin/add_drive. (SoundTrack الإدخال في أسفل الصفحة).
شكرًا
المحلول
من أجل القيام بطلبات عبر المجال، سيحتاجك إلى استخدام JSONP. هذا قد يساعد:
$.ajax({
url: "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch",
dataType: 'jsonp',
data: {'term':$(this).val(), 'limit':'25'},
success: function(j){
var options = '';
for (var i = 0; i < j.results.length; i++) {
options += '<option value="' + j.results[i].trackId + '">' + j.results[i].artistName + ' - ' + j.results[i].trackName + '</option>';
}
$("#track_id").html(options);
}
});
نصائح أخرى
أو قمت ببساطة بتغيير عنوان URL قليلا. من عند
http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch"
ل
http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch?callback=?"
والحفاظ على استخدام $.getJSON
بدلا من التحول إلى $.ajax
إذا كان عنوان URL يتضمن السلسلة
"callback=?"
في عنوان URL، يتم التعامل مع الطلب jsonp. في حين أن.