Saya tahu apa itu AngularJS
sebelum ini, tetapi saya baru mula mencuba hari ini dan menghadapi masalah ini.
Kod adalah seperti berikut:
$http.jsonp("https://request.address.json?callback=JSON_CALLBACK")
.success(
function(data, status, header, config){
$scope.list = data;
alert(data);
}
)
.error(
function(data){
alert("error");
}
);
Selepas mengakses, anda boleh melihat bahawa kod status yang dikembalikan ialah 200 melalui alat pembangun penyemak imbas, dan anda boleh melihat rentetan json
yang dikembalikan, tetapi selepas pelaksanaan, kaedah error
sentiasa saya cari untuk masa yang lama saya tidak dapat mencari penyelesaian, adakah pakar yang boleh memberi saya jawapan?
Di bahagian pelanggan, dokumentasi rasmi menjadikannya sangat jelas“URL relatif atau mutlak yang menentukan destinasi permintaan Nama panggilan balik hendaklah rentetan JSON_CALLBACK.”Di bahagian pelayan, get Parameter panggil balik adalah seperti angular.callbacks._0 dikira mengikut sudut pada sisi klien (angular akan mengira dan mengemas kini nilai medan panggil balik berdasarkan bilangan permintaan daripada klien sebelum menghantar), dan pelayan menerima panggilan balik Selepas medan, hanya kembalikannya sebagai rentetan 'angular.callbacks._0({json data})', contohnya:
Siarkan json yang dikembalikan dan lihat
Antara muka belakang perlu melakukan pemprosesan khas untuk permintaan jsonp. Permintaan membawa parameter panggil balik:
Pemulangan mestilah sekeping kod JavaScript:
Ini berkaitan dengan fakta bahawa JSONP boleh merentas domain menggunakan tag skrip sebagai pembawa permintaan manakala Ajax menggunakan objek XHR.
Kandungan yang dikembalikan ditukar kepada:
Cubalah?
jsonp(url,[config]) hanya boleh memproses hasil dalam format JSONP (JSON != JSONP Jika data yang anda kembalikan dalam format JSON, jsonp() tidak boleh menghuraikannya dan akan melaporkan ralat.
Parameternya ialah panggil balik=JSON_CALLBACK, sudut akan menggantikan JSON_CALLBACK anda secara automatik dan menetapkan Nama panggilan balik untuk anda.
Anda boleh meminta data, tetapi anda tidak boleh memasuki sccess kerana panggilan balik yang ditetapkan mengikut sudut untuk anda tidak dicetuskan. Saya rasa ini adalah sedikit perangkap. Ia tidak mesra pengguna seperti reka bentuk jQuery
Adakah poster asal telah menyelesaikannya? Saya juga menghadapi masalah yang sama seperti anda. Saya boleh mencapai kejayaan seperti biasa pada penyemak imbas, tetapi apabila menyahpepijat pada telefon mudah alih saya, saya sentiasa mendapat ralat, data=undefined status: 404
Adakah poster asal telah menyelesaikannya? Saya juga mengalami masalah yang sama seperti anda.
Paparan konsol: JSON_CALLBACK tidak ditakrifkan
$http.jsonp('http://m-static.igrow.cn/01tpl/json/data.json?callback=JSON_CALLBACK');
//Tambah ini untuk melaraskan data, tetapi rasanya pelik.
tetingkap.JSON_CALLBACK = fungsi(data) {
};
Bagaimana jika saya perlu melakukan perkara lain apabila mengembalikan ralat?