0

我想在不刷新 jquery 页面的情况下提交表单。

但我不知道为什么数据没有插入数据库。下面的代码有问题吗?

在此之前,我已经提到过这里,希望我没有写错。

HTML

<form id="submit">
    <fieldset><legend>Enter Information</legend> <label for="fname">Client First Name:</label> 
    <input id="vName" class="text" type="text" name="vName" size="20" /> 
    <label for="lname">Client Last Name:</label> 
    <input id="vLat" class="text" type="text" name="vLat" size="20" /> 
    <input id="vLng" class="text" type="text" name="vLng" size="20" /> 
    <input id="Add" class="text" type="text" name="Add" size="20" /> 
    <button class="button positive"> <img src="../images/icons/tick.png" alt="" /> Add Client </button></fieldset>
</form>

Javascript

$("form#submit").submit(function() {
// we want to store the values from the form input box, then send via ajax below
var vName     = $('#vName').val();
var vLat      = $('#vLat').val();
var vLng      = $('#vLng').val();
var Add      = $('#Add').val();
    $.ajax({
        type: "POST",
        url: "ajax.php",
        data: "vName="+ vName +"&amp; vLat="+ vLat +"&amp; vLng="+ vLng +"&amp; Add="+ Add,
        success: function(){
            $('form#submit').hide(function(){$('div.success').fadeIn();});

        }
    });
return false;
});

dbtools.inc.php

<?php
      function create_connection()
      {
        $link = mysql_connect("localhost", "root", "52082475");
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }
        echo 'Connected successfully';
        mysql_close($link);

        mysql_query("SET NAMES utf8");
      }

      function execute_sql($database, $sql, $link)
      {
        $db_selected = mysql_select_db($database, $link)
          or die("Fail <br><br>" . mysql_error($link));

        $result = mysql_query($sql, $link);

        return $result;
      }
?>

ajax.php

<?php

    include ("dbtools.inc.php");
    $link = create_connection();
    // CLIENT INFORMATION
    $vName        = htmlspecialchars(trim($_POST['vName']));
    $vLat         = htmlspecialchars(trim($_POST['vLat']));
    $vLng         = htmlspecialchars(trim($_POST['vLng']));
    $Add          = htmlspecialchars(trim($_POST['Add']));

    $sql  = "INSERT INTO map_db (vName,vLat,vLng,add) VALUES ('$vName','$vLat','$vLng','$Add')";


        $result = execute_sql("map",$sql,$link);        
        mysql_close($link);
        header("location:add.html"); 
        exit(); 
?>
4

4 回答 4

2

对于初学者,您的 PHP 代码不安全(查找 sql 注入和准备好的语句)。接下来让你的 PHP 代码回显/打印一些东西——查询的结果。例如,您可能希望使用 JSON 或 XML 来打印查询结果(好||坏)。这样,ajax 可以在success函数中使用它来确定查询是否成功,从而可以适当地显示错误或成功消息。

还响应 ajax 请求中的错误(参考这里)。例如:

ajax.({
   url:..,
   ....
   error: function() {
   ...
   }
}); 

通过解释 PHP 的响应,您应该能够确定错误的原因是什么(错误的 mysql 连接、查询、语法、url、数据等)。

祝你好运。

于 2012-04-07T07:20:05.397 回答
0

我认为您的 ajax post 方法的数据字段中存在语法错误...

如果您想发布整个表格,请使用...

var formData= $('form').serialize();

data: formData

或使用以下代码发送单个参数...

data: { 'vName' : vName, 'vLat' :  vLat, 'vLng' : vLng}

我不熟悉 php 编码风格...但这适用于 c# 方法签名...根据发布的数据字段更改 php 中的代码

注意:在您的提交方法中使用 preventDefault(),以免重定向/刷新您的页面

于 2012-04-07T07:21:38.820 回答
0

如果您想提交表单数据,则无需使用表单标签,而是使用这样的按钮

<input type = 'image' src ='blah blah' id = 'submit'>

我还在这里看到您正在使用提交事件而不是使用点击事件。

于 2012-04-07T07:22:53.040 回答
0

create_connection()我猜你不应该关闭连接。该功能的存在是为了打开一个新功能:)

哦,你似乎也想$link从同一个方法返回,即使你并不真的需要所有的代码(既不显式mysql_close()也不使用$link,除非你碰巧连接到两个或多个不同的数据库在同一个脚本)。

服务器端代码似乎很弱且不安全。如果它是一个宠物项目,那没关系,但如果可能变得很严重,你应该注意 sql 注入和 PHP 漏洞,或者使用通常为你处理这个问题的 PHP 框架

于 2012-04-07T07:26:06.847 回答