我这半天或更长时间都在摔跤。我无法弄清楚出了什么问题。我删除了其他javascript函数,php代码等;我仍然得到一个页面重新加载而不是一个没有返回的异步调用。 Firebug也没有显示XHR调用。
Jquery正确加载,适用于其他功能。任何ajax或jSON调用都无法异步工作。
我甚至将按键功能更改为简单的按钮单击处理程序,结果相同......没有。
如果我直接加载“findmatch.php”页面,它会生成正确的结果。
同一目录中的另一个程序可以毫不费力地使用大量的ajax和jSON调用。相同的doctype,相同版本的jquery,相同的ajax调用结构......我很困惑。我一直在寻找真正愚蠢的错误,因为这就是这些东西往往......但没有运气。
<script type=text/javascript>
$(document).ready( function() {
$('#searchtext').live('keypress',function(e)
{ if (e.which == 13) {
mysearch=$("#searchtext").val(); if(mysearch=="") {
alert("Trying typing something in the box, ok?"); } else {
$.ajax({
url: 'findmatch.php',
data: 'x='+mysearch,
dataType: 'html',
success: function(res)
{
alert(res);
if(res.length>0)
{
buildit="<table><tr><td>id</td>td><b>Machine Name</b></td></tr>";
buildit=buildit+res+"</table>";
$("#searchresults").html(buildit);
$("$searchtext").focus();
}
else
{
$("#searchresults").html("No Results Found");
$("#searchtext").focus();
}
}
}); }
} });
});
</script>
</head>
<body>
<div class="searchy">
<h3>Search for an existing record?</h3>
<form>
Enter a Machine Name to search for, such as "bl-psy-srv" or "psy-srv" or something similar. A partial name will return appropriate matches. Hit Enter to submit.
<br />
<input type=text id="searchtext" size=30>
</form>
</div>
<div class="searchy" id="searchresults">
</div>
答案 0 :(得分:1)
表格中有#searchtext
吗?我认为Enter会触发表单上的提交操作,而您并没有阻止它。尝试插入e.preventDefault()
,看看它是怎么回事。
不相关,你可能想要对mysearch
进行网址编码,或者更好,只需使用一个对象 - jQuery足够聪明,可以将其转换为正确的形式:{ x: mysearch }