【发布时间】:2015-07-22 14:28:39
【问题描述】:
我将以下内容添加到我的 functions.php 文件中:
add_action('wp_ajax_send_email', 'send_email_callback');
add_action('wp_ajax_nopriv_send_email', 'send_email_callback');
所以我添加了以下回调函数:
send_email_callback()
{
//do some processing
echo json_encode(array('response'=>'Ya man it worked.'));
//return control back to *-ajax.php
}
这是返回给我的 javascript 的内容:
{"response":"Ya man it worked."}0
当然,当它到达 $.parseJSON(msg) 行时,我得到 Uncaught SyntaxError: Unexpected number。
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 );
});
});
那么这个 0 是从哪里来的呢? admin-ajax.php 它在第 97 行说:
// Default status
die( '0' );
为什么会在这里,为什么我会到达 die('0') 行?它不应该只是 die() 这样它就不会弄乱我的响应吗?
似乎解决此问题的唯一方法是修改 admin-ajax.php 或在我的 send_email_callback() 函数末尾简单地 die()。
【问题讨论】:
-
我从未见过 json_encode 以这种方式使用。如果你改为
return json_encode(array('response'=>'Ya man it worked.'));会发生什么? -
@jonathan 抱歉输入了它,而不是从项目中粘贴,你是正确的,这是一个错字
-
酷 - 只有在您的编辑中,您才添加了一对多的左括号。
标签: javascript php wordpress