使用ajax提交表单后如何避免URL $ _GET变量?

时间:2016-08-25 08:07:34

标签: php forms url get

<form id='gbookform'>
    <input id='inputname' type='text' name='name' autocomplete='off' placeholder='Your name'>
    <input id='inputcon' type='text' name='contact' autocomplete='off' placeholder='Your contact or website'>
    <div id='forminfo'></div>
    <textarea id='inputstory' name='story' rows='9' placeholder='Your story'></textarea>
    <div class="g-recaptcha" data-sitekey="6LfobygTAAAAACxBzCl1FxPe4lALE-669wt6NC7G"></div>
    <input id='btnsubmit' type='submit' value='SEND'>
</form>

JS

$("#gbookform").submit(function(e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: "gbookajax.php",
        data: $(this).serialize(),
        success: function(data) {
            $('#dataload').load('gbookdata.php');
            $('#forminfo').text(data).show();
        }
    })
})

提交表单后,我看到我在url中写的变量:
http://localhost/gbook.php?name=q&contact=q&story=q&g-recaptcha-response=

我该如何避免这种情况?

3 个答案:

答案 0 :(得分:3)

只需指定表单方法:

<form id='gbookform' method='post'>...</form>

答案 1 :(得分:0)

你的ajax无效。

中的文件名

http://localhost/gbook.php?name=q&contact=q&story=q&g-recaptcha-response=

不同

url: "gbookajax.php",

所以我相信表单是以常规方式发布的,而不是ajax。 你可以做的是把

$("#btnsubmit").submit(function(e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: "gbookajax.php",
        data: $(this).serialize(),
        success: function(data) {
            $('#dataload').load('gbookdata.php');
            $('#forminfo').text(data).show();
        }
    })
})

在一个函数中,如:

function postForm(){
    ...// the ajax request above
}

并添加替换:

<input id='btnsubmit' type='submit' value='SEND'>

<button onclick="postForm()">SEND</button>

答案 2 :(得分:-1)

我不确定您是否要将表单作为GET发送,但是要禁止链接中显示的变量,或者是否要发送POST请求。根据您提供的JS,我假设您要发送POST请求,因此我认为这应该适合您。

<form id='gbookform' method="post">
...
</form>

注意第一行代码的区别,其中添加了方法。 表单的默认方法是GET,因此它被视为原因。

//编辑 由于您尝试发送发布请求,因此您还应该禁止按钮核心功能来发送请求并刷新页面。所以对你的JS你应该添加这个......

$("#gbookform").submit(function(e) {
e.preventDefault();
$.ajax({
    type: "POST",
    url: "gbookajax.php",
    data: $(this).serialize(),
    success: function(data) {
        $('#dataload').load('gbookdata.php');
        $('#forminfo').text(data).show();
    }
})
return false;

})