我是JQuery和整个JQuery的新手,回到JQuery流程。
所以我有一个简单的ajax JQuery脚本:
$.ajax({
type: "POST",
url: "includes/calc.php",
data: {
'var1':var1,
'var2':var2,
},
success: function(data){
alert(data);
$("input#hiddenprice").val(data);
$('#'+itemprice).html("€"+data);
}
})
这是一个PHP脚本,然后我使用一个简单的echo
返回一个值echo $newprice;
上面的成功函数将其用作“数据”。这一切都运作良好。
但如果我想返回多个值,该怎么办呢。
我想我可以使用json_encode();
据我理解的是:
$dataset = array($var1, var2, var3);
echo json_encode($dataset);
但是说我有两个值,我如何将它们都放入JSON中,然后如何将它们拆分到另一端。
所以说“数据”是一个数组,我怎么告诉JQuery拆分它?
很抱歉,如果这很简单
答案 0 :(得分:1)
$.ajax({
type: "POST",
url: "includes/calc.php",
datatype : 'json',
data: {
'var1':var1,
'var2':var2,
},
success: function(data){
alert(data.firstvalue);
alert(data.secondvalue);
}
})
请查看该数据类型。现在响应需要是json。
在你的php用户json_encode而不是echo。
$firstvalue = 'your first value';
$secondvalue = 'your second value';
echo json_encode(array('firstvalue' => $firstvalue,'secondvalue' => $secondvalue));
答案 1 :(得分:1)
如果将.ajax()
的dataType选项指定为json
,jQuery将自动将调用返回的JSON字符串解析为适当的javascript对象/数组。
所以你的电话可能如下:
$.ajax({
type: "POST",
url: "includes/calc.php",
dataType: "json",
data: {
'var1':var1,
'var2':var2,
},
success: function(data){
alert(data);
$("input#hiddenprice").val(data);
$('#'+itemprice).html("€"+data);
}
})
现在,假设您的PHP脚本的响应是一个JSON字符串,表示这样的对象:
{"key1":"value1","key2":"value2"}
在您的成功处理程序中,您只需将此作为对象访问:
success: function(data){
alert(data.key1);
alert(data.key2);
}
或者,如果返回的JSON字符串表示如下数组:
["value1","value2"]
然后您可以在成功处理程序中访问数组值,如下所示:
success: function(data){
alert(data[0]);
alert(data[1]);
}
如果您不想添加dataType
选项,您还可以选择手动将返回的JSON字符串解析为对象/数组,如下所示:
success: function(data){
var dataObj = JSON.parse(data);
alert(dataObj.key1);
alert(dataObj.key2);
}
答案 2 :(得分:0)
有许多方法可以在JSON对象中组织数据。最简单的是返回一个字符串或数字的线性数组。使用http://jsonlint.com/测试您的数据以查看它是否是有效的JSON,或者只是将PHP数组(线性或关联)提供给json_encode
。
如果data
是JSON线性数组,您可以将其视为success
回调中的任何其他JavaScript数组:
var first = data[0]; // first element
var second = data[1]; // second element
答案 3 :(得分:-1)
使用符号或任何自定义数据破坏您的php变量
像
$var[0] = '1st variable';
$var[1] = '2nd variable';
$var[2] = '3rd variable';
echo implode('_SPLIT_',$var);
现在在jquery成功函数
使用' SPLIT '
拆分响应作为
var response = data.responseText.split('_SPLIT_');
var variable1 = response[0];
var variable2 = response[1];
var variable3 = response[2];
并按照您的意愿分配