【发布时间】:2011-10-13 09:07:24
【问题描述】:
我通过 action 方法将表单发布到远程服务器,但在发布之前调用 jquery 函数来更新数据库 - 在 IE、FF 等中一切正常......但是,Safari 总是无法做到jquery 数据库在返回为真或异步时插入:真,...如果两者都是假的,(因此 html 表单由于错误声明而无法发布)它工作得很好吗?但是当为真时,表单只会POST,但jquery ajax post不会运行?
形式 ...
<form action="http://anotherplace" method="post" id="myform" >
<button class="button-big" type="submit" id="myform-post" ><span>Continue</span></button>
函数...
$(document).ready(function() { //available when doc renders
$("form#myform").submit(function(){
var title = $("select#title").val();
if (title == "") {
$("select#title").css({backgroundColor:"#ccc"});
$("select#title").focus();
return false;
}
var firstname = $("input#fname").val();
if (firstname == "") {
$("input#fname").css({backgroundColor:"#ccc"});
$("input#fname").focus();
return false; }
var surname = $("input#sname").val();
if (surname == "") {
$("input#sname").css({backgroundColor:"#ccc"});
$("input#sname").focus();
return false; }
//Grab the form values to pass via AJAX for DB insert
var cameraMake = $("input#cameraMake").val();
var cameraModel = $("input#cameraModel").val();
var cameraValue = $("input#cameraValue").val();
var mp3Make = $("input#mp3Make").val();
var mp3Model = $("input#mp3Model").val();
var mp3Value = $("input#mp3Value").val();
var dataString='&title='+ title + '&firstname=' + firstname + '&surname=' + surname + '&add1=' + add1 + '&add2=' + add2 + '&add3=' + add3 + '&pcode=' + pcode + '&email=' + email + '&phone=' + phone +'&username=' + username + '&pword=' + pword;
var ajaxComplete = false;
if( !ajaxComplete ){
$.ajax({
async: true,
type: "POST",
url: "process-.php",
data: dataString,
success: function() {
// $('#details').html("<div id='post-message'></div>");
// $('#post-message').html("<h2 style='color:#fff'>Thanks for getting in touch.</h2>")
ajaxComplete = true;
this.submit();
}
});
return false; // Abort form submission by now
}else{
return true; // Submit normally
}
});
}); //End of document.ready
脚本在基于提交 ID 的“点击”方法上运行(验证然后 AJAX 发布)。
如果在 Safari 中失败(所有版本都经过测试),任何人都可以提供任何建议,或者提供更好的解决方案来满足我的需求吗? - 与异步/发布有关?正如我所说,设置为 false 并且工作正常......但是,我仍然需要 HTML 表单来发布!
非常感谢!
【问题讨论】:
-
旁注:它是 HTML 5 吗?在 HTML 4 中,ID 不能以数字开头。
-
问题解决了......似乎只有成功函数中的 $("#myform-post").trigger("submit") 可以在 Safari 中使用