在WordPress中,处理ajax表单数据的默认方式有点复杂。像这样修改js代码。
function ajaxSubmit(e){
// prevent the default action.
e.preventDefault();
var myform= jQuery(this).serialize();
jQuery.ajax({
type:"POST",
// Get the admin ajax url which we have passed through wp_localize_script().
url: ajax_object.ajax_url,
action: "submitAjaxForm",
data: myform,
success:function(data){
jQuery(".records").html(data);
}
});
return false;
}
在上面的JS代码中,我替换了表单url并添加了action参数。Wordpress为我们提供了一个统一的文件,即AdminAjax。php。它用于通过admin ajax调用服务器端PHP函数。php。如果未指定操作,请管理ajax。php将退出,并在过程中返回0。
Why form url replaced with ajax_object.ajax_url ?
因为您已经通过了管理ajax。使用wp\\u localize\\u脚本将php转换为JS文件。它还用于通过admin ajax调用服务器端PHP函数。php。如果未指定操作,请管理ajax。php将退出,并在过程中返回0。
Define form action.
要定义表单操作,我们需要使用
wp_ajax_
和
wp_ajax_nopriv_
作为前缀。使用回调函数来处理这些表单数据
示例。
add_action(\'wp_ajax_{YourFormAction}\',\'{CallbackFunction}\');`
add_action(\'wp_ajax_nopriv_{YourFormAction}\',\'{CallbackFunction}\');
- wp_ajax_nopriv_{YourFormAction} 为未登录的用户执行
将此代码添加到
functions.php
文件
add_action(\'init\', \'registerFormAction\');
function registerFormAction(){
// To handle the form data we will have to register ajax action.
add_action(\'wp_ajax_nopriv_submitAjaxForm\',\'submitAjaxForm_callback\');
add_action(\'wp_ajax_submitAjaxForm\',\'submitAjaxForm_callback\');
}
Handle ajax form data 将要处理表单数据的所有代码放在回调函数中,我们最近使用了wp_ajax_{yourAction}
在上面
function submitAjaxForm_callback(){
global $wpdb;
if (isset($_POST[\'store_list\']) && $_POST[\'store_list\'] != \'Select by Store\'){
$store_list = $_POST[\'store_list\'];
$stores= $wpdb->get_results($wpdb->prepare("SELECT malls FROM tablename WHERE stores= \'" . $store_list . "\' AND code IN (\'test3\') ORDER BY street ASC", OBJECT));
foreach ($stores as $record_s){
echo \'<div class="records">\';
echo \'<div><span>\' . $record_s->malls . \'</span></div>\';
echo \'</div>\';
}
} elseif (isset($_POST[\'street_list\']) && $_POST[\'street_list\'] != \'Select by\'){
$street_list = $_POST[\'street_list\'];
$streets = $wpdb->get_results($wpdb->prepare("SELECT street FROM tablename WHERE street_list= \'" . $street_list. "\' AND code IN (\'test3\') ORDER BY stores ASC", OBJECT));
foreach ($streets as $record_m){
echo \'<div class="records">\';
echo \'<div><span>\' . $record_m->stores . \'</span></div>\';
echo \'</div>\';
}
}
// We must have to terminate, to get proper response.
wp_die();
}
希望对您有所帮助!:)