2010-03-30 32 views
0

我試圖解決這個問題幾天沒有運氣。我有一個表單,我使用驗證插件,當我嘗試提交它時,它提交空變量。現在,如果我刪除驗證,一切工作正常。下面是我的實現:jQuery驗證插件結果爲空AJAX POST

$(document).ready(function(){ 

$("#myForm").validate({ 
    rules: { 
    field1: { 
     required: true, 
     minlength: 5 
    }, 
    field2: { 
     required: true, 
     minlength: 10 
    } 
    }, 
    messages: { 
    field1: "this is required", 
    field2: "this is required", 
    }, 
    errorLabelContainer: $("#validate_msg"), 
    invalidHandler: function(e, validator) { 
    var errors = validator.numberOfInvalids(); 
    if (errors) { 
     $("#validate_div").show(); 
    } 
    }, 
    onkeyup: false, 
    success: false, 
    submitHandler: function(form) { doAjaxPost(form); } 
}); 
}); 

function doAjaxPost(form) { 
    // do some stuff 
    $(form).ajaxSubmit(); 
    return false; 
} 

正如我寫時,我有我的驗證,這並不工作,但如果我刪除,只是增加一個

onsubmit="doAjaxPost(this.form); return false"; 

我的HTML表單,它的工作原理 - 任何線索?

回答

0

爲什麼你甚至需要doAjaxPost?我想return false可能是罪魁禍首。你真的需要嗎?

你就不能這樣做

... 
submitHandler: function(form) { 
    //do some stuff 
    $(form).ajaxSubmit(); 
} 
... 
+0

看到我上面的答案。 – user305412 2010-03-31 09:40:06

0

我soved問題,問題是我起訴後的URL。而不是使用完整的URL的:

var url = "https://" + document.domain + "/ajax.php"; 

我只是用:

var url = "/ajax.php"; 

和一切正常,因爲它應該。


當使用與餅乾PHP中,會話ID將自動發送在甚至爲Ajax的XMLHttpRequest請求頭 。如果您使用或 允許基於URL的php會話,則必須將會話ID添加到每個 Ajax請求url,或者使用相對URL路徑(如上面的解決方案)。

<script language="javascript" type="text/javascript"> 
//<![CDATA[ 
    var url = 'https://'+document.domain+'/ajax.php?<?=session_name(); ?>=<?=session_id(); ?>'; 
//]]> 
</script> 

這也適用。