第一次提出问题,希望得到一些建议:
网页代码:
<form id="inbound" action="javascript:validateinbound();">
<input type="submit" value="Go!" id="inbound">
<script>
function validateinbound() {
$('#inbound:input').each(function () {
var iv = $(this).val();
$('#response').hide();
$('#mydiv').fadeIn(1200);
$('#mydiv').delay(1200).fadeOut(600);
$(function () {
$.ajax( {
url: 'validateinbound.php',
data: "variable="+iv,
dataType: 'json',
success: function(data) {
var response = JSON.stringify(data);
$('#response').delay(3600).fadeIn(600);
$('#response').append("<p>Answer: </p>"+response);
}
});
});
});
};
</script>
</form>
这将返回一个我想要使用的字符串,如下所示:
答案:
[{"id":"1","answer":"Pull logging","question_id":"5","feature_id":"1","answer_id":"9"}]
理想情况下,我想做的只是选择&#39;值&#39;到maxmail_answer&#39;键&#39; (希望这些是正确的术语?)而不是网页。现在只有一个值,但将来会有更多值,所以可以解析特定键的字符串,只输出这些值。
视觉上我会看到:
答案:拉动记录(然后是另一个答案:我拉出的每个值)
第一次使用这个网站和这些语言,所以总的菜鸟,并希望得到一些指导。 谢谢!
答案 0 :(得分:1)
您不要对JSON响应进行字符串化,您可以使用对象表示法.
获取所需键的值,如下所示:
function validateinbound() {
$('#inbound:input').each(function () {
var iv = $(this).val();
$('#response').hide();
$('#mydiv').fadeIn(1200);
$('#mydiv').delay(1200).fadeOut(600);
$(function () {
$.ajax( {
url: 'validateinbound.php',
data: "variable="+iv,
dataType: 'json',
success: function(data) {
//var response = JSON.stringify(data); // no need for this line
$('#response').delay(3600).fadeIn(600);
// catch the answer here
// your result returns within an array so you need to catch the first index
$('#response').append("<p>Answer: </p>"+response[0].answer);
}
});
});
});
};
此外,ID是唯一的,您只能通过ID选择器#
访问单个元素,您不需要.each
答案 1 :(得分:0)
您从服务器收到的是JSON格式的对象数组。您放置的样本的长度为&#34; 1&#34;因此,如果想要达到&#34; id&#34;第一个数组,它将是这样的:
// var response = JSON.stringify(data); (// don't stringify it!
$('#response').delay(3600).fadeIn(600);
$('#response').append("<p>Answer: </p>"+data[0].id);
答案 2 :(得分:0)
Json.stringify()
将您的javascript对象作为json数据返回,但我认为在您的情况下,您的响应是您需要操作的json数据。 Json.parse()
为您执行此操作,您可以将您的答案作为javascript对象的属性进行访问。
success: function(data) {
var response = JSON.parse(data);
$('#response').delay(3600).fadeIn(600);
$('#response').append("<p>Answer: </p>"+response[0].answer);
}
如果您的json数据有多个结果,并且您需要完成所有这些结果,请使用循环。
$.each(response,function(index, object){
var response = JSON.parse(data);
$('#response').delay(3600).fadeIn(600);
$('#response').append("<p>Answer: </p>"+object.answer);
});
答案 3 :(得分:0)
这里需要一个循环来遍历你的结果数组并显示每个结果
success: function(data) {
var response = JSON.stringify(data);
$('#response').delay(3600).fadeIn(600);
$.each(response,function(index,value){//the each loop
$('#response').append("<p>Answer: </p>"+value.answer);//get the answer using . notation
});
}
答案 4 :(得分:0)
首先。感谢所有对此发表评论的人,以帮助我开始朝着正确的方向前进。我能够得到我需要的东西!这是解决方案:
<form id="inbound" action="javascript:validateinbound();">
<input type="submit" value="Go!" id="inbound">
<script>
function validateinbound() {
$('#controlpanel:input').each(function () {
var iv = $(this).val();
$('#response').html("");
$('#response').hide();
$('#mydiv').fadeIn(1200);
$('#mydiv').delay(1200).fadeOut(600);
$(function () {
$.ajax( {
url: 'validateinbound.php',
data: "variable="+iv,
dataType: 'json',
success: function(data) {
var newdata = JSON.stringify(data);
var response = JSON.parse(newdata);
$('#response').delay(3600).fadeIn(600);
$.each(response, function(array, object) {
$('#response').append("<p>Answer: </p>"+object.answer);
});
}
});
});
});
};
</script>
</form>
我需要正确解析数据。所以我使用JSON.stringify将数据转换为JSON.parse可用于操作数据的字符串。但是函数(索引,对象)不起作用,因为我的输出不是索引,而是数组。因此,当更改为函数(数组,对象)时,这允许我以我需要的方式获取数据。
再次感谢大家的帮助!