POST没有页面刷新到PHP?

时间:2016-08-11 15:01:01

标签: php jquery html sql ajax

更新 - 请帮助!!!它不会离开页面,但它不会在任何时候发布到SQL Server

我已经关注了多个在线论坛帖子,试图找到答案,但我一直都是这样做的。我只想发布而不刷新页面。我的代码如下,请让我知道我哪里出错了。

以下是AJAX帖子部分(在文件中:edit_project_new.php):

      $(document).ready(function() {
 $("#proj_submit").click(function(event) {
        var pname=document.getElementById('pname').value;
        var p_start_date=document.getElementById('p_start_date').value;
        var con_start_date=document.getElementById('con_start_date').value;
        var con_end_date=document.getElementById('con_end_date').value;
        var p_end_date=document.getElementById('p_end_date').value;
        var IDF_room_ready=document.getElementById('IDF_room_ready').value;
        var AV_install_date=document.getElementById('AV_install_date').value;
        var Occupancy_date=document.getElementById('Occupancy_date').value;
        var PID=document.getElementById('PID').value;


        event.preventDefault();

            $.ajax({
            type:"POST",
            url: "edit_project_new.php?action=update_project",
            data: { 
                name1: PID, name8: p_start_date, name9: con_start_date,
                name10: con_end_date, name11: p_end_date, 
                name12: IDF_room_ready,
                name13: AV_install_date, name14: Occupancy_date },
            success: function() {
                alert("Updated");
            }


    });
});

});

下面是HTML表格和表格(在文件中:functions_new.php):

  <form method="post" action="#">
                <input type="hidden" id="PID" name="PID" value="">
 ...
        <input type="button" id="proj_submit" class="ui blue submit button right floated" value="Update">
            </form></div>

下面是SQL查询部分(在文件中:functions_new.php):

if ((isset($_GET['action'])) AND ($_GET['action'] == "update_project")) {
    $pname= $_POST['pname'];
    $PID=$_POST['PID'];
    $p_start_date=date('Y/m/d', strtotime($_POST['p_start_date']));
    $con_start_date=date('Y/m/d', strtotime($_POST['con_start_date']));
    $con_end_date=date('Y/m/d', strtotime($_POST['con_end_date']));
    $p_end_date=date('Y/m/d', strtotime($_POST['p_end_date']));
    $IDF_room_ready=date('Y/m/d', strtotime($_POST['IDF_room_ready']));
    $AV_install_date=date('Y/m/d', strtotime($_POST['AV_install_date']));
    $Occupancy_date=date('Y/m/d', strtotime($_POST['Occupancy_date']));

    $sql2 = str_replace("'1969/12/31'","NULL","UPDATE Project SET p_start_date='$p_start_date', con_start_date='$con_start_date',con_end_date='$con_end_date',p_end_date='$p_end_date',AV_install_date='$AV_install_date',IDF_room_ready='$IDF_room_ready',Occupancy_date='$Occupancy_date' WHERE PID='$PID'");

    if (mysql_query($sql2)) {
        echo "Project record updated.";
    } else {
        echo "Error: " . $sql2 . "<br>" . mysql_error($link);
    }
}

每当我发布时,它都会加载一个新页面,其中只包含回显“项目记录已更新”。我觉得我很亲密,但我做错了一些,所以如果有人能引导我朝着正确的方向前进,我会非常感激。

5 个答案:

答案 0 :(得分:1)

使用event.preventDefault()时,不会触发点击事件的默认操作。

您的表单操作标记可以删除,并将action=update_project移至jQuery.ajax()

<强>的JavaScript

$('#submit').click(function(event) {
    event.preventDefault();

    // your javasacript code

    $.ajax({
        type: 'POST',
        url: 'functions_new.php',
        data: {
            name1: PID,
            name8: p_start_date,
            name9: con_start_date,
            name10: con_end_date,
            name11: p_end_date,
            name12: IDF_room_ready,
            name13: AV_install_date,
            name14: Occupancy_date,
            action: 'update_project'
        },
        success: function() {
            alert('Updated');
        }
    });
});

请注意,现在action将是POST参数。

<强> PHP

if (isset($_POST['action']) && $_POST['action'] == 'update_project') {
    // your php code
}  

答案 1 :(得分:1)

将输入type=submit更改为type=button以避免按钮的提交行为。

<input type="button" id="proj_submit" class="ui blue submit button right floated" value="Update">

以上按钮的ID为proj_submit,此处$("#submit").click(function()您正在使用另一个可能具有id=submit属性的按钮type=submit

答案 2 :(得分:0)

你错过了动作参数吗?

    $.ajax({
    type:"POST",
    url: "functions_new.php",
    data: { 
        name1: PID, name8: p_start_date, name9: con_start_date,
        name10: con_end_date, name11: p_end_date, 
        name12: IDF_room_ready,
        name13: AV_install_date, name14: Occupancy_date,
        action: 'update_project'
    },

    success: function() {
        alert("Updated");
    }

并更改php文件:

if ((isset($_POST['action'])) AND ($_POST['action'] == "update_project")) {

并使用event.preventDefault();是一种很好的做法

答案 3 :(得分:0)

您可以阻止默认或使用链接而不是提交按钮。

第一个解决方案:PreventDefault:

$( "#form-id" ).on( "submit", function( event ) {
  event.preventDefault();
  data = $( this ).serialize() ); //earn time with serialize()
  //your ajax code
});

第二个解决方案:如果像我一样,你不喜欢PreventDefault

<span onclick="submitForm();">Submit</span>
...
function submitForm(){
   //your code
}

答案 4 :(得分:0)

    $( "form" ).on( "submit", function(e) {
     e.preventDefault();
    data = $(this).serialize();
     $.ajax({
        type:"POST",
        url: "functions_new.php",
        data:data,
        success: function() {
            alert("Updated");
        }
});
});

然后该动作也可以添加为隐藏字段

    <form method="post" action="#">
                <input type="hidden" id="PID" name="PID" value="">
          <input type="hidden" id="action" name="action" value="update_project">
 ...
        <input type="button" id="proj_submit" class="ui blue submit button right floated" value="Update">
            </form></div>

然后是下一个function_new.php页面

  if ((isset($_POST['action'])) AND ($_POST['action'] == "update_project")) {
}