Admin Ajax возвращает 0
-
-
Вы проверили,что ajaxurl настроен правильно?Have you verified that ajaxurl is set properly?
- 1
- 2013-04-27
- Andrew Bartel
-
Консоль вашего браузера показывает какие-либо ошибки?Если так,то кто они?Does your browser console show any errors? If so, what are they?
- 0
- 2013-04-27
- s_ha_dum
-
`jQuery ('. cl_link_buttons'). val ('id'). click (function ()` выглядит странно.`jQuery('.cl_link_buttons').val('id').click(function()` looks odd.
- 2
- 2013-04-27
- fuxia
-
Эндрю,да,я считаю,что это правильно,URL-адрес запроса в Chrome Inspector показывает домен/wp-admin/admin-ajax.phpAndrew, yes I believe it is correct, the request url in Chrome Inspector is showing domain/wp-admin/admin-ajax.php
- 0
- 2013-04-27
- Apina
-
@s_ha_dum Ошибок нет@s_ha_dum No errors showing
- 0
- 2013-04-27
- Apina
-
@toscho.@toscho Perhaps it does look odd, it was the only way I could think of getting the elements ID on click, and it does do the job, the code also shows it has that data, again issue is getting a response from the php.
- 0
- 2013-04-27
- Apina
-
См. Также [как отлаживать AJAX с помощью HTTP] (http://wordpress.stackexchange.com/a/96556/73).See also [how to debug AJAX with HTTP](http://wordpress.stackexchange.com/a/96556/73).
- 0
- 2013-04-27
- fuxia
-
Нет необходимости возвращать ложь.Если вы используетеjQuery,используйте вместо него http://api.jquery.com/event.preventdefault/.There is no need to `return false`. If using jQuery, use http://api.jquery.com/event.preventdefault/ instead.
- 0
- 2015-10-26
- Solomon Closson
-
14 ответ
- голосов
-
- 2013-04-28
Итак,я разобрался.Это был неjQuery как таковой,хотя я его улучшил,это было размещение функции обратного вызова.Я переместил его в основной файл плагина,и он сработал.
So I worked it out. It was not the jQuery as such though I have improved that, it was the placement of the call back function. I moved it over to the main plugin file and it worked.
-
можешь показать,как тебе это удалось?can you show how did you do it ?
- 4
- 2014-01-27
- Francisco Corrales Morales
-
У меня такая же проблема,не могли бы вы показать,как вы это исправили?I am having this same issue, could you show how you fixed this?
- 1
- 2014-03-08
- Jeremy
-
Другой ответ здесь: http://wordpress.stackexchange.com/a/131397 @ ДжеремиAnother answer is here: http://wordpress.stackexchange.com/a/131397 @Jeremy
- 0
- 2014-03-26
- Francisco Corrales Morales
-
- 2013-07-27
Ответ
0
означает,что либо действие не установлено (в данных ajax),либо функция обратного вызова действия не может быть найдена.A
0
response means either that the action is not set (in the ajax data) or that the action's callback function cannot be found.-
Да,это правильный ответ.Все,что добавляет die () в конец,завершает скрипт.Этот ответ является технически правильным,если вы видите,что 0 добавлено в конец вывода,однако,если все,что вы получаете,равно «0»,это означает,что ничего не было возвращено,и у вас есть ошибка,как описано в этом ответе.Yeah, this is the correct answer. All adding die() to the end does, is terminate the script. That answer is technically correct if you're seeing 0 appended to the END of the output, however if all you get is '0', then it means nothing was returned, and you have an error as described in this answer.
- 2
- 2014-05-11
- Hybrid Web Dev
-
Или вы просто ничего не вернули намеренно вphp,который обрабатывает запрос ajax.Убедитесь,что что-то выдает эхом,иначе используйте `.always`,чтобы захватить это.Or you just returned nothing on purpose in the php that handles the ajax request. Be sure to echo something out, otherwise, use `.always` to capture it.
- 0
- 2015-10-26
- Solomon Closson
-
- 2014-01-27
Что вам нужно сделать,так это добавить
die();
в конец вашей функции.Причину и другие сведения можно найти здесь: http://codex.wordpress.org/AJAX_in_Plugins
Примечания:
- Вы должны
echo
что-нибудь перед выполнениемdie
.Это предотвратит ошибки сервера и поможет при отладке.
What you have to do is add
die();
at the end of your function.See the reason and more here: http://codex.wordpress.org/AJAX_in_Plugins
Notes:
- You should
echo
something before executingdie
. This will prevent server errors, and will help when debugging.
-
Это ответ на проблему WP AJAX 0.This is the answer to the WP AJAX 0 problem.
- 10
- 2014-03-26
- Ben Racicot
-
На самом деле,если вы просто добавите `die ()`,ничего не выводя,это также даст вам 500 Internal Server Error и вернет `0` для` wp-admin/admin-ajax.php`.Вы всегда должны что-то повторять,даже если вы просто устанавливаете значения и ничего не нужно возвращать.В противном случае,если вы ничего не выводите и `die ()`,вы должны использовать `.always ()`,чтобы захватить его,потому что он не будет в `.done ()`,он будет в `.fail ()`потому что он умирает без чего=500 ошибок.Actually, if you just add `die()` without echoing something out, this will also give you a 500 Internal Server Error, and return `0` for `wp-admin/admin-ajax.php`. You should always echo out something, even if you are just setting values and nothing is needed to be returned. Otherwise, if you echo nothing and `die()`, you have to use `.always()` to capture it, cause it will not be in `.done()`, it will be in `.fail()` because it dies without anything = 500 Error.
- 0
- 2015-10-26
- Solomon Closson
-
у вас есть ссылки или рабочий код,чтобы мы могли посмотреть?@SolomonClossondo you have some links, or working code, so we can take a look ? @SolomonClosson
- 0
- 2015-10-26
- Francisco Corrales Morales
-
Все мои ответы были проверены в реальных условиях.Это очень просто проверить,просто выполните `die ();` в функции ajax в файле `functions.php`,не повторяя ничего до этого,и вызовите действие через ajax,например:` vartesting=$.ajax (...);testing.fail (функция (ответ) {console.log ('Ошибка' + ответ);});testing.done (функция (ответ) {console.log ('Успех' + ответ);});testing.always (function (response) {console.log ('Запрос Ajax завершен:' + ответ);}); `All my answers have been tested in live environments. It's very simple to test this, just do a `die();` in the ajax function in the `functions.php` file without echoing out anything prior to this, and call the action via ajax, e.g.: `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); });`
- 0
- 2015-10-26
- Solomon Closson
-
Вы заметите,что появится сообщение Failed,ответ будет 500 Internal Server Error.You will notice, Failed will show up, the response will be a 500 Internal Server Error.
- 0
- 2015-10-26
- Solomon Closson
-
Чем добавить эхо к функции PHP непосредственно перед тем,как вы `die ();`,ответ будет,чем результат эха.Than add an echo to the PHP function just before you `die();`, the response will than be the echo'd result.
- 0
- 2015-10-26
- Solomon Closson
-
Я тестировал это с параметром dataType,установленным на HTML,не уверен,возвращают ли другие типы данных что-то другое,или что происходит,когда он не установлен,поскольку он попытается сделать обоснованное предположение о типе данных.ИМО,лучше всегда что-то выводить,даже если это строка с надписью «успех» или «неудача».I tested this with `dataType` set to `HTML`, not sure if other datatypes return something different tho, or what happens when it is not set, since it will attempt to take an educated guess at the data type. IMO, it's just best to output something always, even if it's a string that says 'success' or 'failure'.
- 0
- 2015-10-26
- Solomon Closson
-
- 2014-05-11
У меня такая же проблема.И решил это.Вы должны отправить переменную "действие",как в примере:
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 есть обработчик для переменной действия:
if ( empty( $_REQUEST['action'] ) ) {...} Line 26
I got same problem. And solved it. You must send "action" variable like in example:
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"); } });
Because in wp-admin/admin-ajax.php is handler for action variable:
if ( empty( $_REQUEST['action'] ) ) {...} Line 26
-
OP ___does___ отправляет параметр «действие».Хотя это могло сработать для вас,проблема не в этом.The OP ___does___ send an `action` parameter. While this may have worked for you it was not the problem here.
- 4
- 2014-05-11
- s_ha_dum
-
- 2016-03-29
У меня тоже была эта проблема,и дело было в том,что я использовал
return
вместоecho
в своей функции PHP.Изменение его наecho
исправлено.function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); }
I had this problem too, and it was the fact that I was using
return
instead ofecho
in my PHP function. Changing it toecho
fixed it.function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); }
-
- 2013-04-27
Попробуйте запустить этот код на консоли
jQuery.post(ajaxurl, {action:'cleanlinks_ajax_get_post_data'}, function(response) { console.log (response); });
Я вижу много неправильных вещей в вашем коде JavaScript,и это может быть причиной.
Try running this code on the console
jQuery.post(ajaxurl, {action:'cleanlinks_ajax_get_post_data'}, function(response) { console.log (response); });
I can see many things wrong about your JavaScript code and that might be the reason.
-
Что ж,он придумывает много вещей,которых я не совсем понимаю.Что я понимаю: ReadyState 4,статус 200,responseText "0". И тогда появляется ответ 0. Если есть что-то конкретное,я должен искать здесь? Если есть проблемы с кодом,укажите на них,и я смогу их изучить,я все еще изучаюjQuery.Well it is coming up with a lot of things I dont fully understand. What I do understand: ReadyState 4, status 200, responseText "0". And then it comes up with the response 0. If there something in specific I should be looking for here? If there are issues with the code, please point them out and I can look into them, I am still learning jQuery.
- 0
- 2013-04-27
- Apina
-
ваш сайт работает вживую?do you have your site running live?
- 0
- 2013-04-27
- Omar Abid
-
Нет,это localhostNo, it's localhost
- 0
- 2013-04-27
- Apina
-
Трудно сказать.Не могли бы вы попробовать запустить console.info (ajaxurl);и посмотрите,что это дает?Hard to tell. Could you try running console.info(ajaxurl); and see what it gives?
- 0
- 2013-04-27
- Omar Abid
-
/wp-admin/admin-ajax.php - это ответ редактировать -- /wp-admin/admin-ajax.php неопределенный/wp-admin/admin-ajax.php is the response edit -- /wp-admin/admin-ajax.php undefined
- 0
- 2013-04-27
- Apina
-
попробуйте заменить ajaxurl на http://localhost/wp-admin/admin-ajax.php и посмотрите,что это даетtry replacing ajaxurl with 'http://localhost/wp-admin/admin-ajax.php' and see what it gives
- 1
- 2013-04-27
- Omar Abid
-
Не прямое решение,но этот ответ - это то,что нужно обязательно перепроверить для решения OPNot a direct solution, but this answer is something one should definitely cross-check for a solution to the OP
- 0
- 2016-01-07
- Nirav Zaveri
-
- 2016-07-18
У меня была та же проблема,чтобы исправить ее,я использовал
wp_die()
в конце моей функции сразу послеecho
.Не забудьте передать свое действие в сценарий.Чтобы быть уверенным,проверьте,должна ли ваша функция использовать
wp_ajax_nopriv
,напримерwp_ajax
.I had the same problem, to fix it I used
wp_die()
at the end of my function just after anecho
. Don't forget to pass your action on your script.To be sure, check if your function has to use
wp_ajax_nopriv
likewp_ajax
. -
- 2017-04-27
Для справки,для всех,кто попадает сюда,гуглил "запрос ajax возвращает 0": Помните,когда вы добавляете действие ajax в метод объекта,чтобы убедиться,что модификатор доступа к методам является
public
.add_action( 'wp_ajax_my_action', [$object, 'my_method']);
add_action
просто отключает звук,если он не может вызвать ваш метод вне$object
.Just for reference, for anyone who get here googling "ajax request is returning 0": Remember when you add ajax action to object's method to be sure methods access modifier is
public
.add_action( 'wp_ajax_my_action', [$object, 'my_method']);
add_action
just silences if it can't call your method outside of$object
. -
- 2017-10-17
Если вы не используете функцию wp_localize_script () для установки URL-адреса ajax,администратор 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 });
If you don't use wp_localize_script() function to set ajax url, admin ajax returns 0. I think it's Wordpress bug. Here's is an example :
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' ) );
The javascript file (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 });
-
- 2018-03-22
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(); } ?>
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') } }); }); });
//code function 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(); } ?>
-
Просто опубликовать код - это плохо,не могли бы вы объяснить,что делает этот фрагмент кода?Just posting code is not good, can you please explain what this piece of code does?
- 0
- 2018-03-22
- bravokeyl
-
важно: $ date=isset ($ _ POST ['date'])?$ _POST ['дата']: 0; И функция die ();important: $date = isset($_POST['date']) ? $_POST['date'] : 0; And function die();
- 0
- 2018-03-22
- Ngocheng
-
- 2019-11-10
Те,у кого ошибка 0 :),action=> 'action'
var data = { 'action': 'firmabilgilerikaydet', 'data': form_data }; $.post(ajaxurl, data, function(response) { alert(response); });
Those who get error 0 :), action => 'action'
var data = { 'action': 'firmabilgilerikaydet', 'data': form_data }; $.post(ajaxurl, data, function(response) { alert(response); });
-
- 2020-06-02
Если вы используете localhost и ваш код на сторонеphp-сервера находится в файле плагина,сначала войдите в панель администратора и обновите страницу плагина.Во-вторых,проверьте,активирован ли плагин.Затем перейдите в интерфейс,обновите и попробуйте отправить еще раз.
If you are using localhost and your php server side code is in a plugin file first login to admin dashboard and refresh the plugin page. Secondly, check if the plugin is activated. Then go to frontend and refresh and try sending again.
-
- 2017-03-22
ВЫ ПЫТАЕТЕСЬ: add_action ('инициализация','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'=> __ ('') )); } //Действие: contact_ajax add_action ('wp_ajax_contact_ajax','моя_функция'); add_action ('wp_ajax_nopriv_contact_ajax','my_function'); functionmy_function () { ob_clean (); эхо "http://sanvatvungcao.com"; wp_die (); } /** * Краткий код на такой странице: [ly-form] * @paramtype $ atts * @paramtype $ content * @return строка */ function ly_form_shortcode ($ atts,$ content="") { эхо html_form_code (); } add_shortcode ('ly-form','ly_form_shortcode'); //HTML-форма покажет, function html_form_code () { $ html=""; $ html.=''; $ html.=''; $ html.='
Họm *
'; $ html.='Тен *
'; $ html.='a chỉ *
'; $ html.='Электронная почта *
'; $ html.='Ni dung * dg
'; $ html.=''; $ html.=''; $ html.=''; $ html.=''; return $ html; } И ЗДЕСЬjs (ly-script.js): (функция ($) { $ (документ) .ready (функция () { //Выполнение отправки формы AJAX $ ('form.ly-form-ex'). on ('submit',function (e) { e.preventDefault (); $ ('# загрузка'). html ('загрузка ...'); var dataString={действие: 'contact_ajax'}; $ .ajax ({ тип: "POST", url: ly_form_ajax_object.ajaxurl, данные: dataString, успех: функция (данные) { $ ('# загрузка'). html (данные); }, error:function (errorThrown) { предупреждение (errorThrown); } }); }); });//конец готов }) (jQuery);Надеюсь,это поможет вам, Лучшее
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 );Hope it is helpful for you, Best
-
- 2013-09-23
Попробуйте добавить оператор
if
:function my_function(){ $id = $_POST['variation_id']; if(isset($_POST['variation_id'])) { //your coded function die(); } }// end function
Try adding an
if
statement:function my_function(){ $id = $_POST['variation_id']; if(isset($_POST['variation_id'])) { //your coded function die(); } }// end function
-
Как это решит проблему?Обратите внимание на принятый ответ и исходный код.How would that solve the problem? Note the accepted answer and the original code.
- 1
- 2013-09-23
- fuxia
Я относительно новичок вjQuery и,в частности,в AJAX. У меня небольшая проблема с тем,что возвращаемое значение всегда равно 0,хотя я думаю,что на самом деле это сообщение об успехе,и оно ничего не возвращает.
Я просмотрел стих Google,и у меня есть функция die () в обратном вызове PHP,и я считаю,что add_actions правильные.
Я работаю на локальном хосте,хотя сомневаюсь,что это повлияет на него,и это все в админке,а не во внешнем интерфейсе. Я также проверил,чтоjs поставлен в очередь и локализован.
Я получаю сообщение 200 OK в области разработчика Chrome.
Я также протестировал базовый AJAX из http://codex.wordpress.org/AJAX_in_Plugins ,и он также вернул 0,что заставляет меня задуматься,не является ли это чем-то другим,кроме кода,описанного ниже.
Сейчас я просто пытаюсь заставить его отправить что-то обратно вjQuery. Любая помощь будет принята с благодарностью.
jQuery
PHP