通过AJAX / jQuery将特定值从数据库写入HTML

时间:2017-02-13 06:01:43

标签: javascript jquery html json ajax

第一次提出问题,希望得到一些建议:

网页代码:

<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; (希望这些是正确的术语?)而不是网页。现在只有一个值,但将来会有更多值,所以可以解析特定键的字符串,只输出这些值。

视觉上我会看到:

答案:拉动记录(然后是另一个答案:我拉出的每个值)

第一次使用这个网站和这些语言,所以总的菜鸟,并希望得到一些指导。 谢谢!

5 个答案:

答案 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可用于操作数据的字符串。但是函数(索引,对象)不起作用,因为我的输出不是索引,而是数组。因此,当更改为函数(数组,对象)时,这允许我以我需要的方式获取数据。

再次感谢大家的帮助!