我有一个使用jQuery Validate验证的表单,然后提交给第三方订阅站点。
我也试图将提交内容发布到其他地方。
这是我的表格:
<form class="" action="http://www.fakelink.com/forms/userSubmit.jsp" method="post" id="providerDemoForm" accept-charset="UTF-8">
<fieldset>
<ul class="undecorated group">
<li>
<label for="fld_1_fn">First Name*</label>
<input type="text" name="First Name" id="fld_1_fn" class="required" onFocus="clearMsg();" />
</li>
</fieldet>
</form>
这是我的验证脚本:
<script type="text/javascript">
function postCMFields() {
$.getJSON(
"http://sample.createsend.com/x/x/x/fmill/?callback=?",
$('#providerDemoForm').serialize()
);
}
$(document).ready(function() {
$("#providerDemoForm")[0].reset();
$("#providerDemoForm").validate({
errorClass: "fieldWithErrors",
validClass: "valid",
highlight: function(element, errorClass, validClass) {
$(element).parent("li").addClass(errorClass);
},
unhighlight: function(element, errorClass, validClass) {
$(element).parent("li").removeClass(errorClass);
},
errorContainer: "#formErrorMsg",
errorLabelContainer: "#messageBox",
wrapper: "li", debug:false,
submitHandler: function(form) {
$('#formErrorMsg').hide();
postCMFields();
form.submit();
},
invalidHandler: function(form, validator) {
$('#formErrorMsg').show();
}
});
});
</script>
如果我没有getJSON部分(表单提交动作网址),则提交所有内容。如果我添加函数将带有JSON的内容发布到我的campaignmonitor url,但它不起作用。此外,如果我注释掉“form.submit()”,数据会被发布到campaignmonitor。
有什么我想念的吗?谢谢!
答案 0 :(得分:1)
我不确定为什么我的代码无效,但我认为这是因为我的MIME类型设置不正确。通过更新我的postCMFields
函数以使用.ajax
:
var cmdata = $('#providerDemoForm').serialize();
$.ajax({
type: "GET",
data: cmdata,
url: "http://fake.createsend.com/x/x/x/fmill/?callback=?",
async: false,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/j-son;charset=UTF-8");
}
},
dataType: "json",
success: function(data){
form.submit();
}
});
答案 1 :(得分:0)
网址似乎是虚构的。 http://sample.createsend.com/x/x/x/fmill/?callback=?看起来像是绑定变量的get URL。