使用POST和jQuery发送html表单时出错

时间:2015-05-10 07:07:46

标签: php jquery html ajax

我有这样的表格:

<form id="ereserva"  action="index.php" method="post">
    <fieldset>
        <label for="id">ID</label>
      <input type="id" name="ei" id="eid" readonly class="id text ui-widget-content ui-corner-all">
      <label for="name">Nombre</label>
      <input type="text" name="en" id="ename"  class="name text ui-widget-content ui-corner-all">
     </fieldset>
    <input type="submit" tabindex="-1">   
</form>

我发送的内容是:

$.post("edit.php", $("#ereserva").serialize());

执行此操作的php文件:

<?php
include_once('connection.php');
$id = $_POST['ei'];        
$name = $_POST['en'];

if($con->query("UPDATE reserves SET nom='".$name."' WHERE ID ='".$id."';")=== TRUE)
         printf("alert('success');");
        else
        printf("alert('fail');");
?>

但控制台显示500内部服务器错误。

我担心我在名字或身份证上犯了一些错误,因为我使用相同的系统发送了另一种不同的表格并且它完美无缺。

不过,我正在重新阅读所有名字和ID,我没有发现任何问题......

编辑:为了更明确,日志说:

[Sun May 10 09:13:44.971628 2015] [:error] [pid 6737] [client ::1:49874] PHP Notice:  Undefined variable: id in /Library/WebServer/Documents/s$

但是变量id从表单名称ei到达POST,这是一个明确填充的表单字段,所以我仍然不能很清楚地看到它。

2 个答案:

答案 0 :(得分:1)

500表示服务器上存在错误:

if($con->query("UPDATE reserves SET nom='".$name."' WHERE ID =".$id))
//                                                        ^^^^^^^^^
    printf("alert('success');");
else
    printf("alert('fail');");

您在comma之前的查询中添加了额外的WHERE

另外,猜测IDinteger,因此不需要quotes

答案 1 :(得分:1)

我的猜测是错误来自另一个脚本,因为您将$_POST['ei']分配给id,这意味着id已定义。如果未定义$_POST['ei'],则错误为undefined index ei

此外,您应该清理数据,或使用预准备语句来阻止SQL injection。像这样举例如:

$id = intval($id);
$name = mysql_real_escape_string($name);