【问题标题】:ajax doesn't load my php file in the backgroundajax 不会在后台加载我的 php 文件
【发布时间】:2012-06-08 07:56:40
【问题描述】:

我的 ajax 调用有问题。我正在通过 php 向 mySQL 提交一些信息,提交部分运行良好,它正在将数据添加到数据库中,但是 ajax 函数没有在后台加载该 php,而是在窗口中加载它并显示 php 文件结果。

这是 HTML 代码。

<form action="upload.php" class="addItem" method="post">
      Firstname:<br><input type="text" class="firstname" name="firstname" /><br>
      Lastname:<br><input type="text" class="lastname" name="lastname" /><br>
      Age:<br><input type="text" class="age" name="age" /><br>
      Photo:<br><input type="file" name="image" accept="image/jpeg" /><br><br>
      <input type="submit" class="submitItem" value="Add Row" />
  </form>
  <a href="logout.php">Logout</a>
  </div>

  <script>
  $(document).ready(function(){
    $(".submitItem").click(function(){
    // Start AJAX send
      jQuery.ajax({
        // Enter below the full path to your "send" php file
        url: "upload.php",
        type: "POST",   
        data: data,
        cache: false,
        success: function (html) {
          // If form submission is successful
          if ( html == 1 ) {
            $('.successMessage').show(200);
            $('.successMessage').delay(2000).hide();
          }
          // Double check if maths question is correct
          else {
            $('.errorMessage').show(200);
            $('.errorMessage').delay(2000).hide();
          }
        }
      });
      });
    });

  </script>

这是 PHP 代码

<?php

$name = $_POST['firstname'];
$surname = $_POST['lastname'];
$age = $_POST['age'];

if(($name === "") || ($surname === "") || ($age === "")){
    echo "please fill in all fields";
} else {
    $con = mysql_connect("localhost","user","password");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

    mysql_select_db("my_db", $con);

    $sql="INSERT INTO Persons (FirstName, LastName, Age)
    VALUES
    ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

    if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }

    if ($sql) { echo "1"; }
    else{echo "error";}
    }

    mysql_close($con);

?>

【问题讨论】:

    标签: php ajax


    【解决方案1】:

    您的处理程序需要return false; 来指示浏览器不要执行其常规提交操作。

    (另外,你真的应该考虑使用表单的submit 事件,而不是按钮的click 事件。)

    <script type="text/javascript">
    $(function(){
      $("form.addItem").submit(function(){
        // Start AJAX send
        jQuery.ajax({
          // ... your parameters ...
        });
        return false;     
      });
    });
    </script>
    

    【讨论】:

    • 感谢 Amber,这只是一个测试运行,但我会将其切换到 .submit,我正在添加 return false;但它仍在加载 php 页面。你能告诉我你会把它放在哪里吗?
    • 谢谢,我试过了,还是一样...我的 HTML 表单对吗?我怀疑那里有问题?我只包含了 jQuery,我很确定我不需要其他任何东西
    • 好的,我认为 Ajax 函数被忽略了……知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多