Edw*_*ard 5 javascript php wordpress
我将以下内容添加到我的functions.php文件中:
add_action('wp_ajax_send_email', 'send_email_callback');
add_action('wp_ajax_nopriv_send_email', 'send_email_callback');
Run Code Online (Sandbox Code Playgroud)
所以我添加了以下回调函数:
send_email_callback()
{
//do some processing
echo json_encode(array('response'=>'Ya man it worked.'));
//return control back to *-ajax.php
}
Run Code Online (Sandbox Code Playgroud)
这是我的javascript返回的内容:
{"response":"Ya man it worked."}0
Run Code Online (Sandbox Code Playgroud)
所以当它到达$ .parseJSON(msg)行时,我得到Uncaught SyntaxError:意外的数字.
var request = $.ajax({
url: "/wp-admin/admin-ajax.php",
method: "POST",
data: { action : 'send_email', P : container },
dataType: "html"
});
request.done(function( msg ) {
var obj = $.parseJSON( msg );
console.log(obj.response);
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});
Run Code Online (Sandbox Code Playgroud)
那么0来自哪里?admin-ajax.php 它在第97行说:
// Default status
die( '0' );
Run Code Online (Sandbox Code Playgroud)
为什么这就在这里,为什么我要到达死('0')线?不应该只是死()所以它不会搞砸我的回应?
似乎解决这个问题的唯一方法是修改admin-ajax.php或者在send_email_callback()函数结束时简单地使用die().
在 WordPress AJAX 操作中,您不应该return响应,而是echo响应并调用die自己。WordPress 将继续调用所有 AJAX 注册的回调,直到其中一个回调终止执行,最后一个回调因0.
<?php
add_action( 'wp_ajax_my_action', 'my_action_callback' );
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = intval( $_POST['whatever'] );
$whatever += 10;
echo $whatever;
wp_die(); // this is required to terminate immediately and return a proper response
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |