提交表单的PHP没有刷新页面

时间:2014-11-28 00:35:43

标签: javascript php jquery ajax forms

我已经寻找了很多解决方案但没有成功。

我有一个 html表单;

<form id="objectsForm" method="POST">
      <input type="submit" name="objectsButton" id="objectsButton">
</form>

这用于菜单按钮。

我使用 jquery 来阻止网站刷新;

$('#objectsForm').on('submit', function (e) {

    e.preventDefault();

    $.ajax({
        type: 'post',
        url: '/php/objects.php',
        data: $('#objectsForm').serialize(),
        success: function () {
            alert('success');
        }
    });

});

在我的 php文件中,我尝试将文字回显到我网站的正文;

<?php
if (isset($_POST["objectsButton"])){
     echo '<div id="success"><p>objects</p></div>';
} else {
echo '<div id="fail"><p>nope</p></div>';
}
?>

我知道我的php文件的路径是正确的,但它没有显示任何内容?甚至没有&#34;失败的div&#34;。 有没有人有我的解决方案?

提前致谢!

3 个答案:

答案 0 :(得分:2)

成功函数有两个参数。第一个参数是从php文件返回的内容。尝试将其更改为:

  

成功:功能(xhr){alert(xhr);}

答案 1 :(得分:1)

PHP脚本在服务器上运行,这意味着您赢得的任何回声都不会出现在用户端。

而不是回显html只是回显json编码的成功/失败标志,例如0或1。

您将能够在您的成功函数中获得该值,并使用jQuery在网页上放置div。

PHP:

<?php
    if (isset($_POST["objectsButton"])){
         echo json_encode(1); // for success
    } else {
        echo json_encode(0); // for failure
    }
?>

jQuery的:

var formData = $('#objectsForm').serializeArray();
formData.push({name:this.name, value:this.value });

$.ajax({
    type: 'post',
    url: '/php/objects.php',
    dataType: 'json',
    data: formData,
    success: function (response) {
        if (response == 1) {
            alert('success');
        } else {
            alert('fail');
        }
    }
});

修改

要包含该按钮,请尝试使用以下内容(在$.ajax阻止之前,参见上文):

formData.push({name:this.name, value:this.value });

另外,拥有按钮的value属性:

<input type="submit" name="objectsButton" value="objectsButton" id="objectsButton">

答案 2 :(得分:1)

基于你的php源..

$.ajax({
    type: 'post',
    dataType: "html", // Receive html content
    url: '/php/objects.php',
    data: $('#objectsForm').serialize(),
    success: function (result) {
        $('#divResult').html(result);
    }
});