2

我对 jQuery 很陌生,我可能做错了,但这是我的问题。我有一个页面,用户将输入放入框中并点击提交,其中将在服务器上生成响应数据并使用 AJAX 发回。但是,当我按下提交时没有任何反应......我知道该函数正在被调用,所以我认为我的 jQuery 代码是错误的。

这是我的代码,简化:

<html>
<head>
<style type="text/css">
#hide {
    display:none;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
    $("#submit").click(doAjax());
});
function doAjax() {
    $.ajax({
        type:"GET",
        data:"myquerystring",
        url:"dummy.php"
    }).done(function(data){
        $("#hide").css("display","inline");
        $("#result").html(data);
    });
}
</script>
</head>
<body>
<p>Enter your text:</p>
<!--Code for textboxes-->
<button id="submit">Submit</button>
<p id="hide">Result:<pre id="result"></pre></p>
</body>
</html>

现在,dummy.php 只是:

<?php
echo "hi";
?>

所以这不是问题。谁能帮我这个?

更新:Chrome 告诉我:

 Uncaught TypeError: Object #<XMLHttpRequest> has no method 'done'

当我尝试运行 doAjax()

4

3 回答 3

2

这就是我通常的做法。我更喜欢这种方式而不是速记函数。

$("#submit").on('click', function(){
    $.ajax({
        type:"GET",
        data:"myquerystring",
        url:"dummy.php"
        success: function(data){
            $("#hide").css("display","inline");
            $("#result").html(data);
        }
    });
});
于 2012-04-28T05:10:07.427 回答
1

它正在我的测试中工作。确保您的 jquery 版本为 1.5+ http://api.jquery.com/deferred.done/

jQuery 1.5

于 2012-04-28T04:27:50.507 回答
1

jQuery.done() 是在 jQuery 1.5 中引入的。

这从 jQuery 版本 1.0 开始有效,是我的首选方法:

$.get("dummy.php", {key1: "myquerystring"}, function(data) {
    $("#hide").css("display","inline");
    $("#result").html(data);
});

将 {key1: "myquerystring"} 替换为来自查询字符串的键/值对对象。.ajax()也以这种方式工作。我注意到你只有一根绳子。

.ajax()也有回调功能,但又.get()好又短。

于 2012-04-28T04:32:47.717 回答