Saya relatif baru untuk jQuery dan AJAX pada khususnya. Saya punya masalah kecil dengan nilai pengembalian selalu menjadi 0, meskipun saya pikir ini sebenarnya pesan sukses dan tidak mengembalikan apa pun.
Saya telah menjelajahi Google-ayat dan saya memiliki fungsi die () pada panggilan balik PHP dan saya percaya add_actions sudah benar.
Saya bekerja pada host lokal, meskipun saya ragu itu mempengaruhi dan ini semua ada di admin, bukan front end. Saya juga memeriksa bahwa js enqueued dan dilokalkan.
Saya mendapatkan 200 pesan OK di area pengembang chrome.
Saya juga menguji AJAX dasar dari http://codex.wordpress.org/AJAX_in_Plugins dan juga mengembalikan 0, yang membuat saya bertanya-tanya apakah itu sesuatu selain kode yang diuraikan di bawah ini.
Saat ini saya hanya mencoba membuatnya mengirim sesuatu kembali ke jQuery. Bantuan apa pun akan dihargai.
JQuery
jQuery(document).ready(function(){
jQuery('.cl_link_buttons').val('id').click(function() {
var currentid = jQuery(this).attr('id');
//alert(currentid);
console.log(currentid);
jQuery.ajax ( data = {
action: 'cleanlinks_ajax_get_post_data',
url: ajaxurl,
type: 'POST',
dataType: 'text',
"currentid" : currentid
});
jQuery.post(ajaxurl, data, function(response) {
var dataz = response;
alert( dataz );
console.log (dataz); //show json in console
});
return false;
}); //end click event
}); //end doc ready
PHP
add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
function cleanlinks_ajax_get_post_data() {
$from_ajax = $_POST['currentid'];
echo "do" . $from_ajax . "something";
die();
}
jQuery('.cl_link_buttons').val('id').click(function()
terlihat aneh.Jawaban:
Sebuah
0
respon berarti baik bahwa tindakan tidak diatur (dalam data ajax) atau bahwa fungsi callback tindakan ini tidak dapat ditemukan.sumber
.always
untuk menangkapnya.Yang harus Anda lakukan adalah menambahkan
die();
di akhir fungsi Anda.Lihat alasannya dan lainnya di sini: http://codex.wordpress.org/AJAX_in_Plugins
Catatan:
echo
sesuatu sebelum mengeksekusidie
. Ini akan mencegah kesalahan server, dan akan membantu saat debugging.sumber
die()
tanpa bergema sesuatu, ini juga akan memberikan internal Server Error 500, dan kembali0
untukwp-admin/admin-ajax.php
. Anda harus selalu menyuarakan sesuatu, bahkan jika Anda hanya menetapkan nilai dan tidak ada yang perlu dikembalikan. Kalau tidak, jika Anda tidak menggemakan apa-apa dandie()
, Anda harus menggunakannya.always()
untuk menangkapnya, karena tidak akan ada di.done()
dalamnya, itu akan ada di dalam.fail()
karena ia mati tanpa apa-apa = 500 Kesalahan.die();
fungsi ajax dalamfunctions.php
file tanpa menggemakan apa pun sebelum ini, dan panggil aksi melalui ajax, misalnya:var testing = $.ajax( ... ); testing.fail(function(response) { console.log('Failed ' + response); }); testing.done(function(response) { console.log('Success ' + response); }); testing.always(function(response) { console.log('Ajax Request complete: ' + response); });
Jadi saya mengatasinya. Itu bukan jQuery karena meskipun saya telah meningkatkan itu, itu adalah penempatan fungsi panggilan balik. Saya memindahkannya ke file plugin utama dan berhasil.
sumber
Saya punya masalah yang sama. Dan memecahkannya. Anda harus mengirim variabel "aksi" seperti misalnya:
Karena di wp-admin / admin-ajax.php adalah penangan untuk variabel tindakan:
sumber
action
parameter. Meskipun ini mungkin berhasil bagi Anda, itu bukan masalah di sini.Coba jalankan kode ini di konsol
Saya dapat melihat banyak hal yang salah tentang kode JavaScript Anda dan itu mungkin menjadi alasannya.
sumber
Saya memiliki masalah ini juga, dan itu adalah fakta yang saya gunakan
return
alih-alihecho
dalam fungsi PHP saya. Mengubahnya untukecho
memperbaikinya.sumber
Saya memiliki masalah yang sama, untuk memperbaikinya saya gunakan
wp_die()
di akhir fungsi saya hanya setelahecho
. Jangan lupa menyampaikan tindakan Anda pada skrip Anda.Yang pasti, periksa apakah fungsi Anda harus menggunakan
wp_ajax_nopriv
likewp_ajax
.sumber
Hanya untuk referensi, bagi siapa saja yang pergi ke sini, googling "permintaan ajax kembali 0": Ingat ketika Anda menambahkan tindakan ajax ke metode objek untuk memastikan metode pengubah akses
public
.add_action
diam saja jika tidak bisa memanggil metode Anda di luar$object
.sumber
Jika Anda tidak menggunakan fungsi wp_localize_script () untuk mengatur url ajax, admin ajax mengembalikan 0. Saya pikir itu adalah bug Wordpress. Berikut ini sebuah contoh:
File javascript (search.js):
sumber
// fungsi kode php
sumber
Mereka yang mendapatkan kesalahan 0 :), action => 'action'
sumber
Semoga bermanfaat bagi Anda, Terbaik
sumber
Coba tambahkan
if
pernyataan:sumber