Asynchronous JavaScript and XML (AJAX) Response Text Retrieval
Dalam konteks pembangunan AJAX berasaskan prototaip, mendapatkan semula teks respons menimbulkan cabaran. Pertimbangkan kod berikut:
somefunction: function(){ var result = ""; myAjax = new Ajax.Request(postUrl, { method: 'post', postBody: postData, contentType: 'application/x-www-form-urlencoded', onComplete: function(transport){ if (200 == transport.status) { result = transport.responseText; } } }); return result; }
Dalam coretan ini, fungsi "onComplete" dilaksanakan secara tidak segerak, lama selepas "someFunction" selesai. Ini menghasilkan pembolehubah "hasil" kosong.
Untuk mengatasinya, penyelesaian dicadangkan dalam jawapan yang disediakan: memperkenalkan fungsi panggil balik kepada "someFunction" sebagai parameter. Panggilan balik ini akan digunakan sebaik sahaja operasi AJAX selesai.
Berikut ialah kod yang diubah suai:
somefunction: function(callback){ var result = ""; myAjax = new Ajax.Request(postUrl, { method: 'post', postBody: postData, contentType: 'application/x-www-form-urlencoded', onComplete: function(transport){ if (200 == transport.status) { result = transport.responseText; callback(result); } } }); } somefunction(function(result){ alert(result); });
Dalam kes ini, "someFunction" mengambil panggilan balik sebagai parameter dan memanggilnya dengan teks respons. Dalam contoh, fungsi panggil balik memaparkan amaran dengan teks yang diambil. Mekanisme ini memastikan bahawa teks respons tersedia untuk fungsi berikutnya apabila diperlukan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan semula teks respons AJAX secara serentak dalam Prototype.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!