Функции - Вызов Ajax Всегда Возвращает 0

  • Автор темы Богдан Миколайо
  • Обновлено
  • 21, Oct 2024
  • #1

У меня проблема с тем, что AJAX всегда возвращает 0!

Я все сделал по инструкции и не могу понять, что не так? Пожалуйста, помогите!!

Вот мой вызов Ajax:

 
 function ajaxConversion(){

$amount = mysql_real_escape_string($_POST['amount']);

echo $amount;

die();
};

add_action('wp_ajax_nopriv_ajaxConversion', 'ajaxConversion');
add_action('wp_ajax_ajaxConversion', 'ajaxConversion');
 

И функция в файле function.php:

//Pass data through AJAX var amountToConvert = price; jQuery.ajax({ type:"POST", url: "../../wp-admin/admin-ajax.php", // our PHP handler file action: "ajaxConversion", data: { amount: amountToConvert }, success:function(data){ alert(data); }, error: function(errorThrown){ alert(errorThrown); } }); return false;

#функции #ajax

Богдан Миколайо


Рег
21 Feb, 2012

Тем
56

Постов
199

Баллов
489
  • 25, Oct 2024
  • #2

Не могли бы вы поместить действие (ajaxConversion) в свои данные и проверить?

 
 
 
 
 
 
 function your_ajax_function(){ $result = json_encode($result); echo $result; } 
||answer||

с использованием add_action("wp_ajax_your_ajax_function", "your_ajax_function"); at the end of AJAX function fixed the issue for me.

например

function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); } ||answer||

Для меня трюк заключался в том, чтобы добавить echo action. I tested the script on one browser when I was logged in WP admin, and then I tried same script in Chrome and realized that the script doesn't work. After I put echo , все начало работать. :)

return ||answer||

Я бы рекомендовал использовать wp_send_json_success() и wp_send_json_error() на стороне сервера.

jQuery.ajax({ type : 'post', data : { action: 'ajaxConversion', //nonce : ajax.nonce }, dataType : 'json', url : ajax.ajaxurl, success : function(data){ if(data.success) { alert(data.amount); } else { alert(data.data.message); } } });

Вам не нужно беспокоиться о die() и т. д., а переменная «status» отправляется автоматически, так намного чище. Например

{ "success":true, "data":{"amount":125} }

В результате получится что-то вроде этого:

function ajaxConversion(){ // ... wp_send_json_success(array( 'amount' => $amount )); }

Итак, вы можете легко извлечь значения из вашего вызова ajax: Еще одна распространенная вещь, с которой я столкнулся, — это опечатки в названии действия. Они должны быть wp_ajax_nopriv_{действие} или wp_ajax_{действие}

при входе в систему. Например, wp-ajax_nopriv — это то, что я делал несколько раз в прошлом.

 

Марковь


Рег
07 Nov, 2009

Тем
77

Постов
176

Баллов
581
  • 25, Oct 2024
  • #3
add_action( 'wp_ajax_nopriv_erase_uploaded_images', 'erase_uploaded_images' ); add_action( 'wp_ajax_erase_uploaded_images', 'erase_uploaded_images' ); function erase_uploaded_images() { $attach_id = filter_input( INPUT_POST, 'attach_id' ); wp_delete_attachment( $attach_id ); if ( isset( $_SESSION['uploaded_images'] ) ) { $array_attachments = $_SESSION['uploaded_images']; if ( ( $key = array_search( $attach_id, $array_attachments ) ) !== false ) { unset( $array_attachments[$key] ); } $_SESSION['uploaded_images'] = $array_attachments; } wp_die(); } instead of wp_ajax_nopriv Для меня это был тот факт, что я использовал wp_ajax_nopriv fixed it.

add_action( 'wp_ajax_my_ajax_function', 'my_ajax_function' ); function my_ajax_function(){ echo json_encode($myvar); wp_die(); } ||answer||

в моей функции PHP. Изменение его на

wp_die();

Вы можете забыть добавить строку ниже:

Без вышеуказанной строки ajax не запустится.

jQuery.ajax({ type:"POST", url: ajaxurl, data: { action: "ajaxConversion", amount: amountToConvert }, success:function(data){ alert(data); }, error: function(errorThrown){ alert(errorThrown); } });

 

Efoxxi


Рег
07 May, 2006

Тем
59

Постов
216

Баллов
521
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908