我正在使用管理员ajax,但它无法正常工作。请帮助我找出问题所在。这是jquery代码
jQuery(document).ready(function($) {
jQuery('#newPostsForm').submit(ajaxSubmit);
function ajaxSubmit(){
var newPostsForm = jQuery(this).serialize();
jQuery.ajax({
type:"POST",
url: "<?php echo admin_url('admin-ajax.php'); ?>",
data: newPostsForm,
success:function(data){
jQuery("#feedback").html(data);
}
});
return false;
}
}):
如果我提醒var&#34; newPostsForm&#34; ,它显示了发布的值。但它现在正在进行ajax。这是我正在使用的
<form type="post" action="" id="newPostsForm">
<input type="hidden" name="action" value="addPosts"/>
<!-- input fields -->
</form>
这是我正在使用的WordPress功能。这个功能是另一个文件。 HTML和javascript在同一个文件中
function addPosts(){
echo "<pre>";
print_r($_POST);
die();
}
add_action('wp_ajax_addPosts', 'addPosts');
add_action('wp_ajax_nopriv_addPosts', 'addPosts'); // not really needed
答案 0 :(得分:0)
检查脚本是否在发送到客户端之前由PHP处理。将代码更改为类似于此的内容:
jQuery(document).ready(function($) {
jQuery('#newPostsForm').submit(ajaxSubmit);
function ajaxSubmit() {
var newPostsForm = jQuery(this).serialize();
var url = "<?php echo admin_url('admin-ajax.php'); ?>";
alert("Submitting to URL: " + url);
jQuery.ajax({
type:"POST",
url: url,
data: newPostsForm,
success:function(data){
jQuery("#feedback").html(data);
},
error: function (xhr, status, err) {
alert("Got status " + status + " and error: " + err);
}
});
return false;
}
});
如果您获得了https://mysite.example.org
这样的实际网址,请检查该网址是否有效。如果你得到<?php echo admin_url('admin-ajax.php'); ?>
那么你的代码没有被PHP处理,并且AJAX调用将因为你没有使用有效的URL而失败。
答案 1 :(得分:0)
问题似乎是JS代码中无法访问AJAX URL。如果JS代码写入PHP页面,那么只有代码才能工作。因为PHP代码不能执行到JS文件中。
现在解决方案是本地化JS文件。请按照代码。
wp_localize_script( 'handle', 'settings', array('ajaxurl' => admin_url( 'admin-ajax.php' )));
将上面的代码写入您已将js文件排入队列的位置。 现在在JS文件中:
jQuery.ajax({
type:"POST",
**url: settings.ajaxurl,**
data: newPostsForm,
success:function(data){
jQuery("#feedback").html(data);
}
});
希望它可以根据您的选择工作。