您好我正在使用Jquery getJSON向servlet发送查询参数。 servlet URL单独工作: http://localhost:8080/pgViking/recentUploads?conID=2
它提供以下输出:
{reports:[{filename:"CSVFile_2010-06-16T11_54_53.csv"},
{filename:"CSVFile_2010-06-16T11_54_53.csv"}, <br />
{filename:"PRJ20142_05_10_2008.zip"}]}
然而,我无法从jQuery得到适当的回应。 这是代码:
$(document).ready(function(){
$("#cons").change(function(){
var selected = $("#cons option:selected");
// getJSON("servlet Name", Selected Value 2, 3, function to show result, callback function
$.getJSON("recentUploads?conID=", selected.val(), function(data){
$("#reports").contents().remove();
$.each(data.reports, function(index,rpt){
// add items to List box
$("#reports").append("<option>" + rpt.filename + "</option");
} //end function
); //end of each
}); // getJSON
}); // change
});
html部分:
<select Name="eCons" size="1" id="cons">
<option value="select consultant">Select Consultant</option>
<option value="4">A</option>
<option value ="2">B</option>
<option value="3">Br</option>
<option value ="21">D</option>
<option value="20">G</option>
<option value="24">T</option>
</select>
<br />
<br />
<select id="reports" style ="width:200px">
</select>
当我在firebug中调试它时,我发现我的URL不正确,但我不确定
如果这是唯一的问题:
url="recentUploads?conID=&3"
任何帮助,将不胜感激, 谢谢,
答案 0 :(得分:2)
$("#reports").append("<option>" + rpt.filename + "</option");
这是无效的。结束标记>
不仅缺失,而且根本不会创建真正的HTML元素。使用$("<option>")
让jQuery创建一个真正的HTML <option>
元素。
$("#reports").append($("<option>").text(rpt.filename));
我还建议在循环之前抓住$("#reports")
作为var
,这样效率会提高一点。
您可以在this answer中找到更多示例。
答案 1 :(得分:2)
getJSON调用需要有效的JSON(有效的JSON在键和值周围有引号,唯一的例外是值为数字。您的servlet的输出应该是看起来像这样:
{
"reports": [
{
"filename": "CSVFile_2010-06-16T11_54_53.csv"
},
{
"filename": "CSVFile_2010-06-16T11_54_53.csv"
},
{
" filename": "PRJ20142_05_10_2008.zip"
}
]
}
否则,您可以使用jQuery ajax调用,将dataType属性赋值为“text”并在success函数中使用此代码:
var myObject = eval('(' + myJSONtext + ')')
答案 2 :(得分:1)
也许:
$.getJSON("recentUploads", { 'conID': selected.val()}, function(data){
$("#reports").contents().remove();
http://api.jquery.com/jQuery.getJSON/
参数是:url,data(map或string),callback。
这是一种&符号(&amp;)用于连接作为字符串(3)传递的url + paramenter。结果你有:recentUploaded?conID =&amp; 3
答案 3 :(得分:1)
你不能以这种方式使用jQuery.each函数。 http://api.jquery.com/each/
for(i in data.reports){
// add items to List box
$("#reports").append("<option>" + data.reports[i].filename + "</option");
); //end of loop
删除&amp;使用: $ .getJSON(“recentUploads?conID =”+ selected.val(),function(data){
或:
$.getJSON("recentUploads",{conID:selected.val()}, function(data){