2012-11-03 12 views
7

Jak używać AJAX do zwracania zmiennej w PHP? Obecnie używam echa w moim kontrolerze, aby wyświetlić cenę pod numerem dropdown .change pod numerem div.Jak zwracać zmienne PHP na temat sukcesu AJAX/jQuery POST

Jednak mam ukryte pole, które muszę zwrócić identyfikator wiersza do zmiany. Jak przypisać zwracany var w jQuery, aby móc go wyświetlić w ukrytym polu?

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

}); 

Controller

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

Zobacz

Oto moja ukryta pole Chcę przekazać każdemu VAR czasie forma została zmieniona. "/>

Dzięki za pomoc!

Odpowiedz

15

Cóż .. Jedną z opcji byłoby zwrócić obiekt JSON. Aby utworzyć obiekt JSON w PHP, zaczynasz z tablicą wartości i wykonać json_encode($arr). to zwróci ciąg JSON

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

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

teraz w jQuery, musisz poinformować $.ajax telefon, że spodziewasz się pewne wartości zwracanych JSON, tak można określić inny parametr -.. dataType : 'json' teraz swoje zwracanych wartości funkcja success będzie normalna J Obiekt avaScript.

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

Zaimplementowałem Twoją sugestię. Wydaje się, że działa, ale ma pewne problemy. Zobacz nowe pytanie http://stackoverflow.com/questions/13213361/getting-undefined-response-from-jquery-ajax-form-post Thanks! ;) – fyz

+0

jak uzyskać ten ciąg do zmiennej php? – 151291

+0

@ 151291 - W moim przykładzie dane wewnątrz zmiennej 'query' pojawią się wewnątrz zmiennej' $ _POST', gdy ten kod wykona żądanie 'AJAX'. – Lix

1
echo json_encode($RESPONDE); 
exit(); 

Wyjście nie jest wyświetlanie innych rzeczy oprócz odpowiedzi. RESPONDE dobrze jest być tablicą lub obiektem. Można do niego dostęp w

success: function(data) 
      { data } 

danych jest tablica responde lub cokolwiek echo .. Na przykład ...

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

w jQuery

success: function(data){ alert(data.some_key); } 
+0

sterownik zwraca obiekt zakodowany json, jak mogę go przenieść do skryptu php ?, to znaczy, jak mogę przekazać obiekt json z funkcji ajax ajax do skryptu php – 151291

+0

@ 151291, aby rozpocząć jakąkolwiek akcję PHP, którą musisz wykonać, aby zrobić nową prośbę, więc musisz zrobić ponownie ajax .. Ale jej nie logiczne 1 ajax wywołać 2nd ajax do tego samego skryptu, lepiej jest umieścić swoją logikę w pierwszym skrypcie, który uruchamiasz z prośbą ajax, i tam, aby uruchomić drugą logikę, którą chcesz dodać. (Jeśli jest to oczywiście możliwe .. w przeciwnym razie musisz utworzyć nowe żądanie ajax) – Svetoslav

+0

json.decode() nie jest funkcją PHP. Przejdź do PHP.net i wyszukaj obsługę JSON, pełna dokumentacja jest zrozumiała. Nie jestem nauczycielem. – Svetoslav

1

jeśli u wracają tylko jedna wartość od php respone do ajax, a następnie możesz ustawić ukryty feild za pomocą metody val

$("#hidden_fld").val(return_val);