Ajax call always returns 0

时间:2013-08-30 作者:Kuka

我对AJAX总是返回0有问题!

我什么都按部就班地做了,不知道怎么了?请帮忙!!

以下是我的Ajax调用:

//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;
函数中的函数。php是:

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\');

6 个回复
最合适的回答,由SO网友:Jayawi Perera 整理而成

能否将操作(ajaxConversion)放入数据中并进行检查?

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

});

SO网友:Shoaib Iqbal

使用wp_die(); 在AJAX函数结束时,我解决了这个问题。

e、 g级

add_action( \'wp_ajax_my_ajax_function\', \'my_ajax_function\' );

function my_ajax_function(){      
    echo json_encode($myvar);
    wp_die(); 
}

SO网友:Alexandar Lazovic

对我来说,诀窍在于wp_ajax_nopriv 行动当我登录WP admin时,我在一个浏览器上测试了该脚本,然后我在Chrome中尝试了相同的脚本,并意识到该脚本不起作用。在我把wp_ajax_nopriv, 一切都开始起作用了。:)

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();
}

SO网友:Marcin

我建议使用wp_send_json_success()wp_send_json_error() 在服务器端。您不需要担心die()等,而“status”变量是自动发送的,这样更干净。例如

function ajaxConversion(){
    // ...
    wp_send_json_success(array(
      \'amount\' => $amount
    ));
}
将导致如下结果:

{
 "success":true,
 "data":{"amount":125}
}
因此,您可以轻松地提取ajax调用中的值:

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);
         }

    }
}); 
我遇到的另一个常见问题是动作名称的拼写错误。他们应该是wp_ajax_nopriv_{action}wp_ajax_{action} 登录时。例如,wp-ajax\\u nopriv,就是我过去做过多次的一个。

SO网友:Seano

对我来说return 而不是echo 在我的PHP函数中。将其更改为echo 修复了它。

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

SO网友:li bing zhao

您可能忘记添加以下行:

add_action("wp_ajax_your_ajax_function", "your_ajax_function");

如果没有上线,就无法启动ajax。

这是您的ajax函数

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

结束

相关推荐

为wp_ajax_添加回调函数不起作用

我试图在WordPress AJAX操作中再添加一个回调函数woocommerce_apply_coupon.这个动作是在WooCommerce插件中定义的,我想从插件文件中向这个动作添加我自己的回调函数。我所尝试的:add_action( \'wp_ajax_nopriv_woocommerce_apply_coupon\',\'darn\',999); add_action( \'wp_ajax_woocommerce_apply_coupon\', \'darn\',999); &#