所以我使用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循环,它只是无限运行。
答案 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个参数,首先是索引(这将是value
,value2
)然后是值。