我已经搜索了Google-verse,并拥有了die() PHP回调上的函数,我相信add_actions是正确的。
我正在本地主机上工作,尽管我怀疑会影响它,而这一切都在管理员而不是前端中。我还检查了js是否已入队和本地化。
在chrome开发人员区域中收到200 OK消息。
我还从http:/测试了基本的AJAX。 /codex.wordpress.org/AJAX_in_Plugins,它也返回0,这让我想知道它是否是下面概述的代码之外的其他内容。 jQuery。任何帮助将不胜感激。
jQuery
jQuery(document).ready(function(){
jQuery('.cl_link_buttons').val('id').click(function() {
var currentid = jQuery(this).attr('id');
//alert(currentid);
console.log(currentid);
jQuery.ajax ( data = {
action: 'cleanlinks_ajax_get_post_data',
url: ajaxurl,
type: 'POST',
dataType: 'text',
"currentid" : currentid
});
jQuery.post(ajaxurl, data, function(response) {
var dataz = response;
alert( dataz );
console.log (dataz); //show json in console
});
return false;
}); //end click event
}); //end doc ready
PHP
add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
function cleanlinks_ajax_get_post_data() {
$from_ajax = $_POST['currentid'];
echo "do" . $from_ajax . "something";
die();
}
/>
#1 楼
0
响应表示未设置操作(在ajax数据中)或找不到操作的回调函数。评论
是的,这是正确的答案。最后添加die()的所有操作都是终止脚本。如果您在输出的END后面看到0,则该答案在技术上是正确的,但是,如果您得到的全部是'0',则表示什么都没有返回,并且您有此答案中所述的错误。
–混合Web开发
2014年5月11日在20:26
或者您只是在处理ajax请求的php中没有故意返回任何内容。确保回显某些内容,否则,请使用.always进行捕获。
–所罗门·克洛森(Solomon Closson)
15-10-26在17:12
#2 楼
您需要做的是在函数末尾添加die();
。在这里查看原因和更多信息:http://codex.wordpress.org/AJAX_in_Plugins
注意:
执行
echo
之前,您应该先die
。这将防止服务器错误,并且在调试时会有所帮助。评论
这是WP AJAX 0问题的答案。
– TR3B
2014年3月26日15:59
实际上,如果只添加die()而不回显任何内容,这也会给您500内部服务器错误,并为wp-admin / admin-ajax.php返回0。即使您只是设置值而无需返回任何内容,也应始终回显某些内容。否则,如果什么也没有回声并且die()消失,则必须使用.always()捕获它,因为它将不在.done()中,而将在.fail()中,因为它死掉时没有任何错误= 500错误。
–所罗门·克洛森(Solomon Closson)
15年10月26日在17:05
您是否有一些链接或工作代码,以便我们看一下? @SolomonClosson
–弗朗西斯科·科拉莱斯·莫拉莱斯(Francisco Corrales Morales)
2015年10月26日在17:18
我所有的答案均已在现场环境中进行了测试。测试它非常简单,只需执行die();即可。在functions.php文件中的ajax函数中,而不回显之前的任何内容,并通过ajax调用操作,例如:var testing = $ .ajax(...); testing.fail(function(response){console.log('Failed'+ response);}); testing.done(function(response){console.log('Success'+ response);}); testing.always(function(response){console.log('Ajax Request complete:'+ response);});
–所罗门·克洛森(Solomon Closson)
15-10-26在19:33
您会注意到,将显示“失败”,响应将是500 Internal Server Error。
–所罗门·克洛森(Solomon Closson)
15-10-26在19:38
#3 楼
所以我解决了。尽管我进行了改进,但并不是jQuery这样,而是回调函数的位置。我将其移至主插件文件,并且可以正常工作。评论
你能证明你是怎么做到的吗?
–弗朗西斯科·科拉莱斯·莫拉莱斯(Francisco Corrales Morales)
2014年1月27日20:39
我遇到了同样的问题,能否请您说明如何解决此问题?
–杰里米
2014年8月8日在18:31
另一个答案在这里:wordpress.stackexchange.com/a/131397 @Jeremy
–弗朗西斯科·科拉莱斯·莫拉莱斯(Francisco Corrales Morales)
2014年3月26日在16:22
#4 楼
我有同样的问题。并解决了。您必须像示例中那样发送“操作”变量:var dataString = {lat: '55.56', lng: '25.35', action:'report_callback'};
$.ajax({
url: "http://domain.net/wp-admin/admin-ajax.php",
type: "POST",
//some times you cant try this method for sending action variable
//action : 'report_callback',
data:dataString,
success: function(data){
console.log(data);
},
error: function() {
console.log("Error");
}
});
因为在wp-admin / admin-ajax.php中是操作变量的处理程序: br />
if ( empty( $_REQUEST['action'] ) ) {...}
Line 26
评论
OP确实发送了一个动作参数。尽管这可能对您有用,但这不是这里的问题。
– s_ha_dum
2014年5月11日在20:19
#5 楼
我也有这个问题,这是我在PHP函数中使用return
而不是echo
的事实。将其更改为echo
即可对其进行修复。function doAjax() {
$result = getPosts();
echo json_encode($result, true);
die();
}
#6 楼
尝试在控制台上运行此代码jQuery.post(ajaxurl, {action:'cleanlinks_ajax_get_post_data'}, function(response) {
console.log (response);
});
我发现您的JavaScript代码有很多错误,这可能就是原因。
评论
嗯,这带来了很多我不完全了解的事情。我的理解:ReadyState 4,状态为200,responseText为“ 0”。然后,它的响应为0。如果有特定的问题,我应该在这里寻找?如果代码有问题,请指出来,我可以研究一下,我仍在学习jQuery。
–阿皮娜(Apina)
13年4月27日在17:34
您的网站正在运行吗?
–奥马尔·阿比德(Omar Abid)
13年4月27日在17:35
不,这是本地主机
–阿皮娜(Apina)
13年4月27日在17:36
很难说。您可以尝试运行console.info(ajaxurl);看看它能给什么?
–奥马尔·阿比德(Omar Abid)
13年4月27日在17:37
尝试用'localhost / wp-admin / admin-ajax.php'替换ajaxurl,看看它能提供什么
–奥马尔·阿比德(Omar Abid)
2013年4月27日18:57
#7 楼
jQuery(document).ready(function(){
jQuery('.cl_link_buttons').val('id').click(function() {
$.ajax({
type:'POST',
url: ajaxurl,
data: {
action : 'ajax_filter',
currentid : 'currentid'
},
success: function (result) {
console.log(result);
$result = $(result);
$result.fadeIn('7000');
$("#showresults").html(result);
},
error: function (xhr, status) {
alert("Sorry, there was a problem!");
},
complete: function (xhr, status) {
$('#showresults').slideDown('slow')
}
});
});
});
//代码功能php
<?php
add_action( 'wp_ajax_nopriv_ajax_filter', 'ajax_filter' );
add_action( 'wp_ajax_ajax_filter', 'ajax_filter' );
function ajax_filter(){
$date = isset($_POST['date']) ? $_POST['date'] : 0;
echo $date;
die();
}
?>
评论
仅仅发布代码是不好的,您能解释一下这段代码的作用吗?
–bravokeyl
18 Mar 22 '18在4:52
重要:$ date = isset($ _ POST ['date'])吗? $ _POST ['date']:0;和功能die();
– Ngocheng
18-3-22在6:35
#8 楼
我有同样的问题,要解决此问题,我在函数wp_die()
之后使用了echo
。不要忘记对脚本传递操作。请确保检查您的函数是否必须使用
wp_ajax_nopriv
,例如wp_ajax
。#9 楼
仅供参考,对于任何在这里使用谷歌搜索“ ajax请求返回0”的人: br />如果无法在
public
之外调用您的方法,则add_action
只会静音。#10 楼
如果您不使用wp_localize_script()函数设置ajax网址,则admin ajax将返回0。我认为这是Wordpress的错误。这是一个示例: wp_enqueue_script( 'search_js', get_template_directory_uri() . '/js/search.js', array( 'jquery' ), null, true );
wp_localize_script( 'search_js', 'ajaxurl', admin_url( 'admin-ajax.php' ) );
javascript文件(search.js):
$('#search_input').autocomplete({
source: function(request, response) {
$.ajax({
type: 'POST',
dataType: 'json',
url: ajaxurl,
data: 'action=my_custom_action_search&search_criteria=' + request.term,
success: function(data) {
response(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
},
minLength: 3
});
#11 楼
那些得到错误0的人:),action =>'action'var data = { 'action': 'firmabilgilerikaydet', 'data': form_data };
$.post(ajaxurl, data, function(response) { alert(response); });
#12 楼
如果您使用的是本地主机,并且您的php服务器端代码位于插件文件中,请首先登录到管理信息中心并刷新插件页面。其次,检查插件是否已激活。然后转到前端并刷新,然后尝试再次发送。#13 楼
YOU TRY: add_action('init', 'ly_form_ajax_init'); function ly_form_ajax_init() { wp_register_script('ly-form-ajax-script', plugins_url().'/ly-form/js/ly-script.js' , array('jquery')); wp_enqueue_script('ly-form-ajax-script'); wp_localize_script('ly-form-ajax-script', 'ly_form_ajax_object', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'redirecturl' => home_url(), 'loadingmessage' => __('') )); } // Action is: contact_ajax add_action( 'wp_ajax_contact_ajax', 'my_function' ); add_action( 'wp_ajax_nopriv_contact_ajax', 'my_function' ); function my_function(){ ob_clean(); echo "http://sanvatvungcao.com"; wp_die(); } /** * Short code in page like this: [ly-form] * @param type $atts * @param type $content * @return string */ function ly_form_shortcode($atts, $content = "") { echo html_form_code(); } add_shortcode('ly-form', 'ly_form_shortcode'); //HTML Form will show, function html_form_code() { $html = ""; $html.= ''; $html.= ''; $html.= ' Họ đệm * '; $html.= ' Tên * '; $html.= ' Địa chỉ * '; $html.= ' Email * '; $html.= ' Nội dung * dg'; $html.= ' '; $html.= ''; $html.= ''; $html.= ''; return $html; } AND HERE js (ly-script.js): ( function( $ ) { $(document).ready(function () { // Perform AJAX form submit $('form.ly-form-ex').on('submit', function(e){ e.preventDefault(); $('#loading').html('loading...'); var dataString = {action:'contact_ajax'}; $.ajax({ type: "POST", url: ly_form_ajax_object.ajaxurl, data: dataString, success: function (data) { $('#loading').html(data); }, error: function (errorThrown) { alert(errorThrown); } }); }); }); // end ready } )( jQuery );
希望对您有帮助,
评论
您可能要解释原因:)
– kaiser
17年3月22日在9:09
底线可能是ob_clean();功能。你可以做和体验
– Ly Van Vu
17 Mar 24 '17 4:20
#14 楼
尝试添加if
语句:function my_function(){
$id = $_POST['variation_id'];
if(isset($_POST['variation_id'])) {
//your coded function
die();
}
}// end function
评论
那将如何解决问题?请注意接受的答案和原始代码。
– fuxia♦
2013年9月23日在2:28
评论
您是否已验证ajaxurl设置正确?浏览器控制台是否显示任何错误?如果是这样,它们是什么?
jQuery('。cl_link_buttons')。val('id')。click(function()看起来很奇怪。
安德鲁,是的,我相信这是正确的,Chrome浏览器检查器中的请求网址显示的是domain / wp-admin / admin-ajax.php
@s_ha_dum没有错误显示