我想在文本框中的数组中显示我的过滤数据...我已经在google上查了几天已经对我的程序的相同想法有效但我无法找到任何帮助。
我认为问题是脚本没有按预期工作......我需要你的帮助。
示例预期输出:
html代码:
<form name="form" method="get">
Search batchcode: <input type="text" id="query" name="search" /><br />
<table>
<tr>
<td>
ID: <br />
<input id="id1" type="text" name="id1" /> <br />
<input id="id2" type="text" name="id2" /> <br />
</td>
<td>
Name: <br />
<input id="name1" type="text" name="name1" /> <br />
<input id="name2" type="text" name="name2" /> <br />
</td>
<td>
Score 1: <br />
<input id="optA1" type="text" name="optA1" /> <br />
<input id="optA2" type="text" name="optA2" /> <br />
</td>
<td>
Score 2: <br />
<input id="optB1" type="text" name="optB1" /> <br />
<input id="optB2" type="text" name="optB2" /> <br />
</td>
<td>
Other Qualification: <br />
<input id="other_qual1" type="text" name="other_qual1" /> <br />
<input id="other_qual2" type="text" name="other_qual2" /> <br />
</td>
<td>
Interview: <br />
<input id="interview1" type="text" name="interview1" /> <br />
<input id="interview2" type="text" name="interview2" /> <br />
</td>
<td>
Total: <br />
<input id="total1" type="text" name="total1" /> <br />
<input id="total2" type="text" name="total2" /> <br />
</td>
</tr>
</table>
</form>
脚本代码:
<script type="text/javascript">
$(document).ready(function(){
$('input[name^=search]').click(function(){
$.ajax({
url:"search.php",
type:"GET",
data: { term : $('#query').val() },
dataType:JSON,
success: function(result) {
$('#id1').val(result.id).show();
$('#id2').val(result.id).show();
$('#name1').val(result.name).show();
$('#name2').val(result.name).show();
$('#optA1').val(result.score1).show();
$('#optA2').val(result.score1).show();
$('#optA1').val(result.score2).show();
$('#optA2').val(result.score2).show();
$('#other_qual1').val(result.other_qual).show();
$('#other_qual2').val(result.other_qual).show();
$('#interview1').val(result.interview).show();
$('#interview2').val(result.interview).show();
$('#total1').val(result.total).show();
$('#total2').val(result.total).show();
}
});
})
});
</script>
search.php页面:
<?php
$q = $_GET['term'];
mysql_connect("localhost","root","");
mysql_select_db("test");
header('Content-type: application/json');
$query = mysql_query("SELECT * FROM score WHERE batchcode LIKE '%$q%'");
$data = array();
while($row = mysql_fetch_array($query)){
$data[] = array('value'=>$row['batchcode'],
'id' => $row['id'],
'name' => $row['name'],
'score1' => $row['score1'],
'score2' => $row['score2'],
'other_qual' => $row['other_qual'],
'interview' => $row['interview'],
'total' => $row['total']
);
}
echo json_encode($data);
?>
当我去search.php页面时,我得到了这个输出:
答案 0 :(得分:1)
search.php中的错误,第3行:GET中有任何值吗?
输入字段的名称为“搜索”,但您的GET为“期限”
<input type="text" id="query" name="search" />
$q = $_GET['term'];
那些必须是相同的
答案 1 :(得分:1)
我尝试了你的代码,一切似乎都很好,尽管有一些小错误。
在你在search.php的第3行显示错误的图片中,我认为你从浏览器本身运行了没有GET变量的url,这就是为什么它似乎显示错误,尽管你的数据库查询似乎工作。您的AJAX代码似乎正在通过它的数据值正确发送$ _GET ['term']。但是,您的AJAX响应有错误。
我必须改变的唯一一条线是 -
dataType:JSON,
到
dataType:'JSON', //Note the quotes
它有效!。
它给出的错误是No conversion from text to [object
。我在ajax中发生错误时通过添加回调函数找到了。就像这样(你不必添加它,但这样做是个好主意。)
//Immediately after the success callback, separated by comma.
error: function(jqXHR,textStatus,errorThrown ){
console.log(JSON.stringify(jqXHR));
console.log(textStatus);
console.log(errorThrown);
}
希望这有帮助。
PS:在你的JavaScript中,你似乎已经在click事件上触发了ajax。这甚至在用户写入任何内容之前触发ajax调用,从而使您的GET变量为空。一个更好的选择是focusout,它允许用户在填充其余字段之前输入内容。
答案 2 :(得分:0)
变化:
input type="text" id="query" name="search"
为:
"input type="text" id="query" name="term"
html表单名称标记应与php脚本标记匹配。