简单的Div更新与jquery&阿贾克斯

时间:2011-02-27 23:28:34

标签: jquery ajax

嘿伙计们,当最终用户点击提交时,我正在尝试更新div元素 键。

所以我有这段代码:

        <div class="duruGetPhone"> <input type="submit" name="upload" value="submit" class="something" />  </div>
        <script>
        $(document).ready(function() {
            $('input.something').click(function(e) {
                 e.preventDefault();
                $('div.duruGetPhone').load('loadImage.php', {param1: '<?php echo $Hood; ?>', param2: '<?php echo $Id; ?>'});
            });
        });
        </script>

如果我使用'a'标签或'span'但输入不起作用,这可以正常工作。 它实际上更新了div,但没有执行提交。如果我 不要使用“preventDefault”然后没有任何反应。有人可以对这一个有所了解吗?

2 个答案:

答案 0 :(得分:1)

假设您的示例包含在表单标记中,我有可能的解释。

如果没有preventDefault,则会触发click事件处理程序,但会通过将表单发布到服务器来缩短,因此load函数永远不会完成。

使用preventDefault,点击事件处理程序将触发并成功结束。但是,默认行为(表单提交)已被禁用。

除了click事件之外,您为什么还希望表单回发到服务器?我误解了什么吗?

如果您希望点击事件因成功提交表单而触发,我会调查使用jQuery表单插件http://jquery.malsup.com/form/来使用ajaxSubmit或{{异步控制回发1}}。

答案 1 :(得分:0)

如果我理解你想要的正确(提交表单,将响应放在DIV中,并在发生这一切时发生按钮时禁用该按钮)我会使用上面提到的表单插件:

http://jquery.malsup.com/form/

...并做这样的事情(未经测试,但应该在球场):

<script>
$(document).ready(function() {
   $("#myform").ajaxForm({
      target: "div.duruGetPhone",
      beforeSubmit: function(responseText, statusText) {
         $("input.something").disable();
      }
   });
});
</script>

<form id="myform" method="post" action="loadImage.php">
   <input type="hidden" name="param1" value="<?php echo $Hood; ?>"/>
   <input type="hidden" name="param1" value="<?php echo $Id; ?>"/>
   <div class="duruGetPhone">
      <input type="submit" name="upload" value="submit" class="something" />
   </div>
</form>

然后loadImage.php只需要返回你想插入duruGetPhone的IMG标签。