php - AJAX 无法 POST 到 PHP 文件

标签 php mysql ajax forms post

FIXED! See bottom for solution.

我对此感到非常困难。我已经这样做好几个星期了。我正在尝试使用 AJAX 将新记录添加到 mysql 中。 PHP 文件可以 100% 工作,但我似乎无法使 AJAX 与我的表单一起使用,该表单具有发送数据的 POST 方法。顺便说一句,这是我第一次来到 StackOverflow,所以请放轻松。这是代码:

HTML 代码:

<form name='addform' method='POST' >
    <td></td>
    <td><input type='text' id='cname'></td>
    <td>
        <select id='fuel'>
            <option value='Petrol'>Petrol</option>
            <option value='Diesel'>Diesel</option>
            <option value='Hybrid'>Hybrid</option>
            <option value='LPG'>LPG</option>
        </select>
    </td>
    <td>
        <select id='trans'>
            <option value='Automatic'>Automatic</option>
            <option value='Manual'>Manual</option>
            <option value='Semi-Auto'>Semi-Auto</option>
        </select>
    </td>
    <td><input type='text' id='engine'></td>
    <td><input type='text' id='doors'></td>
    <td><input type='text' id='total'></td>
</tr>
<tr>
    <td><input type='submit' value='Add Car' onclick='addRecord()'></td>
...

我有一个外部 .js 文件来处理 Javascript:

function addRecord(){
    if (
        document.addform.cname.value == "" 
        || document.addform.fuel.value == "" 
        || >document.addform.trans.value == "" 
        || document.addform.engine.value == "" 
        || document.addform.doors.value == "" 
        || document.addform.total.value == ""
    ) 
    { 
        alert ("Empty >field(s) - Cannot create record"); 
        return;
    }

    var mydata = null;
    // Mozilla/Safari
    if (window.XMLHttpRequest) 
    {
        xmlHttpReq2 = new XMLHttpRequest ();
    }
    // IE
    else if (window.ActiveXObject) 
    {
        xmlHttpReq2 = new ActiveXObject ("Microsoft.XMLHTTP");
    }

    var cname = document.getElementById('cname').value;
    var fuel = document.getElementById('fuel').value;
    var trans = document.getElementById('trans').value;
    var engine = document.getElementById('engine').value;
    var doors = document.getElementById('doors').value;
    var total = document.getElementById('total').value;

    mydata = '?cname='+cname+'&fuel='+fuel+'&trans'+trans+'&engine'+engine+'&doors'+doors+'&total'+total;          

    alert ("To Server (Add New Record):\n\nadd.php" + mydata);

    xmlHttpReq2.open('POST', "add.php" +mydata, true);
    xmlHttpReq2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttpReq2.send(null);
    xmlHttpReq2.onreadystatechange = addRecordCallback;
}

PHP 代码:

<?php

$link = mysql_connect ("194.81.104.27", "www", "www");
mysql_select_db ("xyz") or die(mysql_error());

$tot=$_POST[total];
$door=$_POST[doors];
$query = "INSERT INTO tbl 
    (ID, CARNAME, FUELTYPE, TRANSMISSION, ENGINESIZE, DOORS, TOTAL, AVAILABLE)
    VALUES ('$_POST[cname]','$_POST[cname]', '$_POST[fuel]', '$_POST[trans]','$_POST[engine]', $door, $tot, $tot)";
    $result = mysql_query($query);
    mysql_close ($link);
?>

发生的情况是,我将信息放入表单中,单击按钮,警报告诉我它确实从表单中获取了数据。但之后什么也没有发生。我认为由于某种原因,数据没有以正确的格式发送到 PHP 文件。

谢谢!

Solution was:

我成功让它工作了!部分错误是像 @adeneo 所说的那样我没有 onclick='addRecord(); return false;' 在那里!我做的另一件事是删除表单的 id,不确定这是否有任何作用。我还将“mydata”附加到 .send,如下所示: xmlHttpReq2.send(mydata); 最后我不得不删除“?”它位于 mydata 变量收集事物中 cname 的前面。所以它是 mydata = '?cname='+cname+...,我必须删除 ?。感谢大家的帮助!

最佳答案

你的生活变得复杂了,因为你已经使用了 jquery,也将它用于 AJAX。

$.AJAX({ url: "php 路径", 类型:“帖子”, 数据:$("#formID").serialize(), });

将其作为数据发送,就可以了。

抱歉,有拼写问题,是从手机上检测到的。 问候

埃泽基

关于php - AJAX 无法 POST 到 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982595/

相关文章:

ajax - 如何让selenium等待ajax响应?

javascript - 为什么不使用此脚本删除此单元格文本?

MySQL - 如何重命名列?

python - 使用ajax从python获取数据

javascript - wordpress 安全中的 Ajax

mysql - sql 日期比较仅在年份为第一时才有效

php - 如何计算以秒为单位的两个日期时间之间的差异?

php - 尝试使用 SSL 读取大消息时,通过 Stomp 与 Artemis 的连接中断

javascript - 无法将变量从 PHP 传递到 JS

php - 从今天开始从数据库中选择