2014-10-11 7 views
0

Так я отправляю данные через jquery.ajax на PHP, который возвращает значение единицы (то есть вся страница PHP, который посылает только одно значение)получить несколько значений из Ajax вызова

Я хотел бы тянуть два значения с этой php-страницы, но как я могу разделить два значения с помощью jquery?

То, что я пытаюсь достичь,

  1. на кнопку мыши отправить список информации о товарах и идентификаторы
  2. JQuery использует Ajax для отправки в PHP для каждого элемента списка
  3. PHP принимает значения и сохраняет их в базу данных, а затем выдает новый ID
  4. jquery сохраняет этот новый идентификатор в элемент списка, к которому он был прикреплен ранее.

Проблема, с которой я сталкиваюсь, что я не могу получить jquery для таргетинга на старый элемент списка. Поскольку я использую цикл for, и результаты внутри функции, я могу только настроить таргетинг на последний элемент списка.

Вот код, о котором я думал, работал бы, но это не так.

var i; 
    for (i = 0; i < updatearray.length; ++i) { 
    var curval = updatearray[i], 
     rowid  = "#row_"+curval, 
     text1val = $(rowid+" .text1").val(), 
     text2val = $(rowid+" .text2").val(), 
     text3val = $(rowid+" .text3").val(); 
     cardorder = $(".edit_main li:visible").index($(rowid)) + 1; 

    $.ajax({ 
     type: "POST", 
     url: "../../study/edit/save.php", 
     data: { prowid: curval, ptext1val: text1val, ptext2val: text2val, ptext3val: text3val, pdeckid: deckid, pcardorder: cardorder } 
    }) 
    .done(function(msg) { 
     $("#row_"+curval+' button').val(msg); 

     alert("Data Saved2: " + msg); 
    }); 
    } 

По какой-то причине переменная «curval» всегда будет последней в массиве. Итак, чтобы противостоять этому, я могу отправить правильную строку через php, но я не знаю, как разделить их. Поэтому я бы хотел, чтобы это выглядело в основном.

.done(function(newValue, oldValue) { 

    $("#row_"+oldValue+' button').val(newValue); 
}); 

Если то, что я пытаюсь сделать, это неясно, пожалуйста, так сказать, и я постараюсь, чтобы дать более полное объяснение.

ответ

1

вы можете получить более 2 значений из своего php, есть некоторые способы, я думаю, что самый популярный, хотя и с JSON.

позволяет сказать, что в вашем PHP:

$arr = array(
"value_1"=>46534, 
"value_2"=>654 
); 

echo json_encode($arr); 

вы получите объект JSON:

{"value_1":46534,"value_2":"654"} 

и чем вы можете использовать его, как это в свое обещание

$.ajax(...).success(function(data){ 
    var value1 = data.value_1; 
    var value2 = data.value_2; 
}) 
1

I я бы сделал это по-другому.Я бы использовал JSON, как предложил Dima, и поместил все переменные в строку json при отправке на php, а также обратно:

AJAX: var json_var = все другие переменные, которые вы отправляете в формате json (пожалуйста, google json если вы не знаете, как использовать его)

$.ajax({ 
     type: "POST", 
     url: "../../study/edit/save.php", 
     data: { vars: json_var } 
    }) 

в PHP:

$vars = json_decode($_POST['vars']); // is now an array that you can use 

и для возвращения данных:

print json_encode($array); 

и в JS:

.done(function(msg) { 
     var obj = JSON.parse(msg); 
     // if you want use jquery than this instead 
     var obj = $.parseJSON(msg); 

     $("#row_"+curval+' button').val(obj.ptext2val); 
    }); 
Смежные вопросы