使用javascript将数据放入文本框中

时间:2014-02-02 08:51:19

标签: javascript php html ajax json

我想在文本框中的数组中显示我的过滤数据...我已经在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页面时,我得到了这个输出:

3 个答案:

答案 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脚本标记匹配。