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/