您的代码应该工作正常,因为它没有问题,但是。。。
您在其中使用相对URL传递loaddata.php?id1=
作为URL。它是相对的,因此它将尝试查找loaddata。当前目录中的php文件。
因此,如果您在主页上,那么它将尝试从根目录加载该文件。但如果你在某个岗位(即。example.com/my-post/
), 它将尝试从加载该文件/my-post/
目录-并且没有这样的目录,所以不会有好的结局。
您应该使用绝对URL来避免此问题。
您不使用管理ajax,但。。。我们正在使用WordPress,所以。。。有更多的文字压缩方式来使用AJAX。
所有AJAX请求都应使用admin-ajax.php
文件,您应该使用wp_ajax_{action}
和wp_ajax_nopriv_{action}
钩子来处理此类请求。
因此,您的代码应该更像这样:
function fun5() {
var mydata = {
action: \'loadmydata\',
id1: document.getElementById(\'city\').value
};
$.ajax({
url: LoadDataObject.ajax_url,
data: mydata,
complete: function(data) {
document.getElementById(\'show1\').innerHTML=data.responseText;
}
});
}
在PHP文件中,您应该:
定义LoadDataObject
对象使用wp_localize_script
:。
wp_enqueue_script( \'loadmydata-script\', plugins_url( \'/js/my_query.js\', __FILE__ ), array(\'jquery\') );
// in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script( \'loadmydata-script\', \'LoadDataObject\',
array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
添加处理操作:。
function loadmydata_callback() {
// ... put your loading code here
}
add_action( \'wp_ajax_loadmydata\', \'loadmydata_callback\' );
add_action( \'wp_ajax_nopriv_loadmydata\', \'loadmydata_callback\' );
您可以在此处阅读有关在WP中使用AJAX的更多信息:
https://codex.wordpress.org/AJAX_in_Plugins