我有一个HTML表单,用于向后端服务器发送消息。当用户单击send按钮时,它会触发一个javascript,该javascript对WordPress进行Ajax调用,然后对后端服务器进行API调用以发送消息。这部分工作完美无瑕。然后服务器用一个字符串进行响应,我希望返回到javascript以在表单中显示该字符串。
由于某种原因,我无法获取javascript的返回值。我已将我的功能剥离为以下内容:
function smsgte_admin_send() {
check_ajax_referer(\'smsgte_nonce\', \'security\');
$response = admin_server_send(filter_input(INPUT_POST, \'message\', FILTER_SANITIZE_STRING));
$result = array (
//\'response\' => $repsonse,
\'response\' => \'just a response\',
);
return $result;
}
The
admin_server_send
触发发送到服务器的消息。消息到达服务器,因此正常工作。我询问服务器的响应,所以我只是用一个随机字符串填充结果数组,但javascript从未收到该字符串。
javascript代码是:
function smsgteAdminSend(button) {
var message = document.getElementById("smsgte_admin_message").value;
jQuery(document).ready(function ($) {
var data = {
\'action\': \'smsgte_admin_send\',
\'message\': message,
\'security\': smsgte_Ajax.ajax_nonce,
};
jQuery.post(smsgte_Ajax.ajaxurl, data, function (response, status) {
document.getElementById("smsgte_admin_send_response").innerHTML = response.response;
});
});
}
最初,我将响应作为字符串而不是键/值对发送,但这也不起作用。我忍不住想我错过了一些简单的东西。
SO网友:Prdufresne
@majick提供的答案是正确的。我发布这个答案是为了说明我是如何修改代码示例的。
function smsgte_admin_send() {
check_ajax_referer(\'smsgte_nonce\', \'security\');
$response = admin_server_send(filter_input(INPUT_POST, \'message\', FILTER_SANITIZE_STRING));
echo $response;
wp_die();
}
javascript代码已更改为:
function smsgteAdminSend(button) {
var message = document.getElementById("smsgte_admin_message").value;
jQuery(document).ready(function ($) {
var data = {
\'action\': \'smsgte_admin_send\',
\'message\': message,
\'security\': smsgte_Ajax.ajax_nonce,
};
jQuery.post(smsgte_Ajax.ajaxurl, data, function (response, status) {
document.getElementById("smsgte_admin_send_response").innerHTML = response;
});
});
}
在这个问题中,我发送了一个键/值对,因为我认为jQuery需要一个对象。因为我需要做的是回显响应,所以键/值对是不必要的,我只是回显响应字符串。