$ .Post with Form submit

时间:2010-12-24 01:36:34

标签: javascript jquery ajax forms post

......某个表单已提交......

$.("form").submit(function() {
saveFormValues($(this), "./../.."; }

function saveFormValues(form, path) {
var inputs = getFormData(form);
var params = createAction("saveFormData", inputs);
var url = path + "/scripts/sessions.php";
$.post(url, params);
}


奇怪的是,如果我在中添加一个功能 $.post(url, params, function(data) {
alert(data); }

我得到一个空白的警告声明。

在scripts / sessions.php中,我有一个函数可以将$ _POST信息保存到文件中,并且sessions.php永远不会保存这个saveFormValues调用。它永远不会出现在文件中。但是,如果我一直试图让它保存,大约每15个人就会实际允许它被保存。这让我相信表单POST会以某种方式阻止这个值保存帖子。有什么帮助吗?

4 个答案:

答案 0 :(得分:0)

您需要通过从处理程序返回false来取消原始提交。 更新:如果您希望继续提交原始表单,则可以删除处理程序并从帖子回调中重新提交表单。

$.("form").submit(function() {
    saveFormValues($(this), "./../..");
    return false; // cancels original submit and allows AJAX post to complete
});

function saveFormValues(form, path) {
    var inputs = getFormData(form);
    var params = createAction("saveFormData", inputs);
    var url = path + "/scripts/sessions.php";
    $.post(url, params, function() {
       $('form').unbind('submit').trigger('submit');
    });
}

答案 1 :(得分:0)

在提交功能中添加return false;以阻止表单提交:

$.("form").submit(function() {
saveFormValues($(this), "./../.."); return false });

更新:

如果您想稍后提交表单,请保留一个变量以表明是否可以提交:

var canSubmit = false;
$.("form").submit(function() {
    if(!canSubmit)
    {
        saveFormValues($(this), "./../..");
        return false;
    }
});

以后:

$.post(url, params, function(data) {
    alert(data); 
    canSubmit = true; 
    $.("form").submit();
}

答案 2 :(得分:0)

所以我没有做一个$ .post,而是尝试将async设置为false的$ .ajax。它可以保存表格值...比如3/5次...任何新的建议?

答案 3 :(得分:0)

所以我决定创建一个不会从表单中保存的项目的关联列表。

$nosave = array("password" => true, "confirmPassword" => true, "descriptionCount" => true, "detailedDescriptionCount" => true, "submit" => true, "action" => true, "p" => true); //Then i decided to go through the $_POST information and save it to the SESSION info.
foreach ($_POST as $key => $value) {
if ($key != $id && !array_key_exists($key, $nosave)) {
//saves the value to the form.
$_SESSION[$id][$key] = $value;
}
}

//The $id is a hidden input.. name="formId" value="someUniqueId" That way whenever
//the form info is saved, its saved under a unique area and can be easily unset.


我没有通过jQuery执行此操作,而是调用了一个函数,该函数大致完成了我的sessions.php文件中的所有操作。