所以我通过jquery.ajax将数据发送到php,返回一个值(即只发送一个值的整个php页面)
我想从该php页面中提取两个值但是如何用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 );
});
}
出于某种原因,&#34; curval&#34;变量将始终是数组中的最后一个。所以,为了解决这个问题,我可以通过php发送正确的行,但我不知道如何拆分它们。所以我希望它基本上看起来像这样。
.done(function( newValue, oldValue ) {
$("#row_"+oldValue+' button').val(newValue);
});
如果我想做的事情不明确请说出来,我会尝试做出更全面的解释。
答案 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);
});