Как использовать AJAX для возврата переменной в PHP? В настоящее время я использую echo в своем контроллере для отображения цены на dropdown .change
.
Однако у меня есть скрытое поле, в котором мне нужно вернуть идентификатор строки для изменения. Как назначить 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 каждый раз, когда форма изменяется. "/>
Спасибо за помощь!
Ну … Один из вариантов – вернуть объект JSON. Чтобы создать объект JSON в PHP, вы начинаете с массива значений, и вы выполняете json_encode($arr)
. Это вернет строку JSON.
$arr = array( 'stack'=>'overflow', 'key'=>'value' ); echo json_encode($arr); {"stack":"overflow","key":"value"}
Теперь в вашем 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 } });
echo json_encode($RESPONDE); exit();
Выход не должен отображать другие вещи, кроме ответа. RESPONDE хорош для массива или объекта. Вы можете получить к нему доступ
success: function(data) { data }
data – массив ответа или что-то, что вы эхо. Например …
echo json_encode(array('some_key'=>'yesss')); exit();
в jquery
success: function(data){ alert(data.some_key); }
если u возвращает только одно значение из php respone в ajax, тогда u может установить его скрытый feild с помощью метода val
$("#hidden_fld").val(return_val);