从ajax调用中检索多个值

时间:2014-10-11 18:49:35

标签: javascript php jquery ajax

所以我通过jquery.ajax将数据发送到php,返回一个值(即只发送一个值的整个php页面)

我想从该php页面中提取两个值但是如何用jquery将这两个值分开?

我想要实现的是,

  1. 按钮点击发送列表项信息和ID
  2. jquery使用ajax为每个列表项发送到php
  3. php获取值并将其保存到数据库,然后吐出新ID
  4. jquery将新ID保存到以前附加到的列表项中。
  5. 我遇到的问题是我无法通过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 );
        });  
      }
    

    出于某种原因,&#34; curval&#34;变量将始终是数组中的最后一个。所以,为了解决这个问题,我可以通过php发送正确的行,但我不知道如何拆分它们。所以我希望它基本上看起来像这样。

     .done(function( newValue, oldValue ) {
    
       $("#row_"+oldValue+' button').val(newValue);
     });
    

    如果我想做的事情不明确请说出来,我会尝试做出更全面的解释。

2 个答案:

答案 0 :(得分:1)

你可以从你的php获得超过2个值,有一些方法,我认为最流行的是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 :(得分:1)

我想我会这样做。我会使用JSON作为Dima建议,并在发送到php时将所有变量放在json字符串中,并且还返回:

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