我正在为Wordpress内置的应用程序添加一些自定义JS来设置约会,这样如果发出约会请求,客户端和工作人员都会收到请求电子邮件。通过按下按钮进行约会,并通过将按钮绑定到.click()事件来进行请求。
要发送电子邮件,我将ajax函数放在第一个ajax函数的成功函数中以批准约会,这样如果约会被批准,则会发送电子邮件。我试图设置它,但发现无论我做了什么,成功函数内的第二个ajax函数都不会触发,甚至无法正确报告错误是什么。
为了测试这是否是错误的ajax函数本身,我把它从成功函数中取出并放在$(document).ready(function(){})中,将它绑定到另一个事件,看它是否会发射 - 它确实发生了。所以函数本身不是问题,而是它在另一个 ajax请求的成功函数内。
我该怎么办才能解决这个问题?关于Stack Overflow的其他建议最多也很混乱,所以请原谅我再次提问,但似乎没有一个明确令人满意的答案。
这是我在第一个ajax请求的回调函数中放入的代码,当我把它放在回调函数之外并将其绑定到不同的eventy时,它运行得非常好。
$.ajax({
type: "POST",
dataType: "JSON",
url: "[home url]/wp-admin/admin-ajax.php",
data: "action=finchJsonTest",
success: process_lesson_request,
error: function(MLHttpRequest, textStatus, errorThrown){
alert(errorThrown);
alert("Something\'s not right!");
}
});
function process_lesson_request(data) {
alert("Hooray!");
console.log(data);
}
这是PHP函数,WordPress的调用来处理这个Ajax请求(在数据串的“动作”变量确定) - 没有什么太重要的事情,我只是测试,看它是否会成功返回JSON对象
function finchJsonTest() {
$json_array[] = 'This is something!';
$finaljson_array = json_encode($json_array);
echo $finaljson_array;
die();
}
add_action( 'wp_ajax_nopriv_finchJsonTest', 'finchJsonTest' );
add_action( 'wp_ajax_finchJsonTest', 'finchJsonTest' );
同样,如果我使用这个ajax调用自己绑定到某个事件,它完美地工作并返回所需的JSON对象(只是文本说'这是某事'),但是如果我把它放在成功的回调函数中另一个ajax请求,它失败了,甚至没有抛出错误。事实上,我已经阅读了与此相关的其他Stack Overflow帖子,并且无法做出正面或反面的操作。有什么想法吗?