如何在成功的AJAX/jQuery POST上返回PHP变量

fab*_*bbb 8 php ajax jquery codeigniter

如何使用AJAX在PHP中返回变量?我目前在我的控制器中使用echo来显示价格dropdown .changediv价格.

但是我有一个隐藏字段,我需要将行ID返回到更改.如何在jQuery中分配return var以便我可以在隐藏字段中回显它?

jQuery的

$(document).ready(function() {
    $('#pricingEngine').change(function() {
         var query = $("#pricingEngine").serialize();
         $('#price').fadeOut(500).addClass('ajax-loading');
         $.ajax({
             type: "POST",
             url: "store/PricingEngine",
             data: query,
             success: function(data)
             {
                  $('#price').removeClass('ajax-loading').html('$' + data).fadeIn(500);
             }
         });
    return false;
   });

});
Run Code Online (Sandbox Code Playgroud)

调节器

function PricingEngine()
{
    //print_r($_POST);
    $this->load->model('M_Pricing');
    $post_options = array(
      'X_SIZE' => $this->input->post('X_SIZE'),
      'X_PAPER' => $this->input->post('X_PAPER'),
      'X_COLOR' => $this->input->post('X_COLOR'),
      'X_QTY' => $this->input->post('X_QTY'),
      'O_RC' => $this->input->post('O_RC')
                          );

    $data = $this->M_Pricing->ajax_price_engine($post_options);

    foreach($data as $pData) {
        echo number_format($pData->F_PRICE / 1000,2);
        return $ProductById = $pData->businesscards_id;
    }
}
Run Code Online (Sandbox Code Playgroud)

视图

这是我的隐藏字段,我希望每次更改表单时都要传递VAR."/>

谢谢您的帮助!

Lix*_*Lix 16

嗯..一个选项是返回一个JSON对象.要在PHP中创建JSON对象,请从值数组开始执行json_encode($arr).这将返回一个JSON字符串.

$arr = array(
  'stack'=>'overflow',
  'key'=>'value'
);
echo json_encode($arr);

{"stack":"overflow","key":"value"}
Run Code Online (Sandbox Code Playgroud)

现在在你的jQuery中,你必须告诉你的$.ajax调用你期望一些JSON返回值,所以你指定另一个参数 - dataType : 'json'.现在,success函数中返回的值将是一个普通的JavaScript对象.

$.ajax({
  type: "POST",
  url: "...",
  data: query,
  dataType: 'json',
  success: function(data){
    console.log(data.stack); // overflow
    console.log(data.key);   // value
  }
});
Run Code Online (Sandbox Code Playgroud)