发送表单POST后重新加载页面不起作用,但GET是

时间:2014-01-28 15:32:07

标签: php ajax post get

感谢您阅读我的问题,对不起,如果我的英语不完美。

所以,我的问题是当我通过ajax发送一个带有方法post的表单时,我的页面错误在重新加载时。经过一些测试,我发现如果我使用方法得到,一切正常。我不明白。此外,如果我评论选择部分,它甚至可以用post。

这是我的代码: ajax函数:

    function showDispo(){

            validate($('#frmUpdateTaux'));
        }
    function validate(form) {

            $.ajax({
                url: "updateDispo.php"
                , data: $(form).serialize()
                , datatype: 'json'
                , type: 'post'
                , error: function(error, errmsg){
                    alert(errmsg + ' :=: ' + error.responseText );
                }
                , success: function(Data) {
                    location.reload(true);
                }
            });
        }

和我的HTML代码:

<form method="get" id="frmUpdateTaux">
        <table border="0" cellspacing="0" cellpadding="2">

            <tr>
                <td align="left">
                    <label class="lbl" id="lblMois" name="lblMois" for="lstMois">Mois :</label>
                </td>
                <td align="left">
                    <select id="lstMois" name="lstMois" size="1">
                        <option value="1">Janvier</option>
                        <option value="2">Février</option>
                        <option value="3">Mars</option>

                    </select>
                </td>
            </tr>
            <tr>

                <td align="left"  colspan="2">
                <input type="button" id="btnGenerate" name="btnGenerate" value="Mettre à jour" onclick="showDispo()">
                </td>
            </tr>
    </form> 

UpdateDispo.php

require_once("BD.php"); $month= $_POST["lstMois"]; /*query */ $insertNewIndispo ='...' //execution of the query 

// QUERY INSERT $ insertNewIndispo ='...'

$ exec = BD :: run($ insertNewIndispo,BD :: QUERY_INSERT,false,false);

仅供参考:我想重新加载页面以显示此页面中运行的查询结果,并通过UpdateDispo.php将新值插入数据库表中

你知道问题的来源吗?

感谢。

1 个答案:

答案 0 :(得分:1)

或许你遇到的问题如下:

<form method="get" id="frmUpdateTaux">

如果要发送$ _GET,如何获得$ _POST?

如果您想使用ajax,请尝试:

<form onsubmit="return false;" id="frmUpdateTaux">

然后你可以使用你的ajax代码来捕获你发送的变量。

Btw:对于ajax,我使用以下代码来捕获表单数据:

    // First declare your variables by their ID.
    var lstMois = document.getElementById('lstMois').value;
    var ajax = ajaxObj("POST", "put here your filename(can be the same as the one you are currently browsing)");
    ajax.onreadystatechange = function() {
        if(ajaxReturn(ajax) == true) {
            if(ajax.responseText == "success"){
                // Do something.
                } else {
                // Something went wrong, alert them.
                alert("Oops! Something went wrong. Please try again.")
            }
        }
    }
    ajax.send("lstMois="+lstMois);
}

然后你应该在你所指的页面中有php代码,这将是这样的:

$lstMois = $_POST['lstMois'];
// Do whatever you want with it.
// If everything went well:
echo "succes";
exit();

ajax代码会看到php已经向它发送了'succes',并且会在

中执行任何操作
if(ajax.responseText == "success"){

}

PS。对不起我的英语,我不是母语人士。