根据特定密钥的状态迭代ajax请求

时间:2016-03-21 20:27:47

标签: php jquery ajax

所以我使用jquery,ajax和php来查询和显示数据库中的数据。我正在向ajax页面提交数据,如下所示。

提交Ajax请求

$('#mainInput').keydown(function(e) {
    if (e.keyCode == 13 || e.keyCode == 9) {

//Text after hitting enter button

var user_id = "<?php echo $user_id; ?>";


$.ajax({
        type: 'POST',
        url: 'ajax_get_code.php',
        data: {mainInput: $("#mainInput").val(),
                id : user_id},
        datatype:"json",
        success: function(response) {

            var parsedData = jQuery.parseJSON(response);

                $.each(parsedData, function(index){


                if (parsedData.value2 == null){
                    $("#mainInput").val(parsedData.value);
                    $("#secondaryInput").val(parsedData.value);

                }
                else {                                              

                    $("#mainInput").val(parsedData.value);
                    $("#secondaryInput").val(parsedData.value2);
                }
            });

        },
        error: function(xhr, status, error){
    alert("Error!" + xhr.status);
    }
    });

     e.preventDefault();


    }


});

在流程请求页面上,我将字符串展开,以根据此字符&#34;,&#34;分隔提交。以便用户一次运​​行多个查询。

Ajax流程请求

<?php

require_once("class.codes.php");


$userCode= $_POST['mainInput'];
$user_id = $_POST['id'];

$removeSpace = str_replace(' ','', $userCode);
$parts = explode(",", $removeSpace);

foreach($parts as $part){    


            $all_codes = New CODES;


                try
    {
        $stmt = $all_codes->runQueryTwo("SELECT user_code, user_text FROM codes WHERE user_code=:userCode AND user_id=:user_id");
        $stmt->execute(array(':userCode'=>$part, ':user_id'=>$user_id));
        $row=$stmt->fetch(PDO::FETCH_ASSOC);

                    //result

                    $user_text = $row['user_text'];

                    echo json_encode(array("value"=>$part,"value2"=>$user_text));


    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }


}




?>

当我使用.parseJson库控制台记录请求时,只提交一个查询,我得到正确的响应,并相应地填写文本框。但是,当我提交多个键时,这些键由&#34;分隔,&#34;我什么也得不回来。没有错误,没有任何错误。

但是,当我在不使用.parseJson库的情况下使用多个查询来控制记录请求时,我得到了正确的响应,看起来像下面的示例数据。

{"value":"backbone","value2":"backbone, fixed."}{"value":"james","value2":"james"}{"value":"john","value2":null}

这是正确的,但我现在想要显示所有键&#34;值&#34;在mainInput textarea和键&#34; value2&#34;在secondaryInput中。它应该循环一些如何,直到没有更多的键值对。

我尝试过使用for循环,当我提交一个查询时,它会返回两倍的键值对。

我是php和ajax的新手请帮忙,因为我一整天都在研究和尝试。我也尝试了一个while循环,它只是无限运行。

1 个答案:

答案 0 :(得分:0)

假设#mainInput是一个textarea,行$("#mainInput").val(parsedData.value);将覆盖for循环中的每个先前值。

你必须做的是连接textarea中已经存在的内容,因此在你的ajax成功函数中,你会这样编写代码:

var parsedData = JSON.parse(response);

$.each(parsedData, function(index, value){
    $("#mainInput").val(parsedData.value);
    $("#secondaryInput").val(parsedData.value);
});

另请注意,请注意,$.each回调函数的签名需要2个参数,首先是索引(这将是valuevalue2)然后是值。