【发布时间】:2012-07-19 22:00:03
【问题描述】:
我正要用这个把头发从头上拔下来。
我确定问题很简单,我是 Jquery 的 Ajax 新手,我只是忽略了一些东西。但是,这很烦人。每次提交表单时,页面都会刷新,.ajax 会抛出 error:。这可能是什么原因造成的?我知道我肯定会将我的表单值传递给 Jquery。 newcomment.php 正在工作。我可以向它发布常规表单,但不能使用 jquery。
function postPhotoComment() {
var comment = $("#comment").val();
var album = $("#album").val();
var photo = $("#photo").val();
var dataString = "comment="+comment+"&album="+album+"&photo="+photo;
$.ajax({
type: "POST",
url: "/includes/actions/photo-gallery/newcomment.php",
data: dataString,
success: function(res) {
alert("Posted!");
}
error: function(res) {
alert("Error!");
}
})
}
编辑:这是我的 html 表单:
<form>
<textarea id="comment" placeholder="Post Comment..."></textarea>
<input id="album" type="hidden" value="<?php echo "$a"?>"/>
<input id="photo" type="hidden" value="<?php echo "$p.$ext"?>"/><br/>
<button id="photo-comment-submit" onclick="postPhotoComment()">Post</button>
</form>
我还注意到,如果我提供输入 names,Chrome 会将它们像 GET 变量一样放入 url 栏中。每次页面刷新后,它都会在 url 的末尾添加?。因此,它似乎在尝试定期提交表单。
【问题讨论】:
-
您是如何触发 ajax 调用的,以及错误响应中的内容(尝试使用
console.log(res)并检查控制台? -
显示运行 postPhotoComment() 函数的代码。以常规方式提交表单会刷新页面,除非您阻止了提交函数的默认操作,否则您可能会以常规方式和 ajax 提交表单,从而导致页面刷新。
-
@Tyrsius postPhotoComment() 只需通过 onclick="" 触发。
-
@RyanSmith 然后正如其他人所说,您的表单仍将尝试执行提交非 ajax 样式的默认操作。你需要从你的函数中返回 false,或者
preventDefault -
@Tyrsius 这绝对是在执行默认操作,但即使返回 false 和 preventDefault,我仍然得到相同的结果。