8

AJAX を使用して PHP で変数を返すにはどうすればよいですか? 現在、コントローラーでエコーを使用しdropdown .changeて、div呼び出された価格で価格を表示しています。

ただし、変更時に行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;
   });

});

コントローラ

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

意見

これは、フォームが変更されるたびに VAR を渡したい隠しフィールドです。" />

助けてくれてありがとう!

4

3 に答える 3

16

ええと..1つのオプションはJSONオブジェクトを返すことです。PHPでJSONオブジェクトを作成するには、値の配列から始めて、を実行しjson_encode($arr)ます。これにより、JSON文字列が返されます。

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

{"stack":"overflow","key":"value"}

これで、jQueryで、$.ajaxJSONの戻り値を期待していることを呼び出しに伝える必要があるため、別のパラメーターを指定します- 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
  }
});
于 2012-11-03T19:54:39.360 に答える
1

uがphpresponeからajaxに単一の値のみを返す場合、valメソッドを使用して非表示のフィールドに設定できます

$("#hidden_fld").val(return_val); 
于 2012-11-24T19:40:43.980 に答える
1
echo json_encode($RESPONDE);
exit(); 

出口は答え以外の他のものを表示することではありません。RESPONDEは、配列またはオブジェクトに適しています。あなたはそれにアクセスすることができます

success: function(data)
             { data }

dataは、responde配列またはエコーするものです。たとえば...

echo json_encode(array('some_key'=>'yesss')); exit();

jqueryで

success: function(data){ alert(data.some_key); }
于 2012-11-03T19:55:20.053 に答える