我已经按照能够找到的所有指南和教程进行了操作,但我仍然无法确定是什么导致了这个问题:
我使用以下代码:
function updaterow(){
$.ajax({
url: 'updaterowajax.php',
type:'POST',
data: 'ID=' + ID + '&SupStatus=' + SupStatus +'&$OrderOther=' + OrderOther,
success: function(result){
console.log(result);
}
});
}
将表单内容发布到php页面,但由于某种原因它似乎没有以post方式发送,尤其是没有将它发送到正确的页面。
在地址栏中出现了以下文本:
orderlist.php?ID=36&SupStatus=2&OrderOther=Ska+binda+Telia+Liten+18+m%E5n.&Submit36=Spara
这是我的AJAX脚本所在的文件名。 在我看来,它正在向当前页面发送GET请求,而不是POST请求到“updaterowajax.php”。
我做错了什么吗? GET中的所有信息都是正确的,但它没有被传递。
代码或者服务器设置有问题吗? 默认Apache,MySQL和我有jQuery 1.7.1.
表单应该被发布:
while ($row = mysql_fetch_array($query)) {
echo "<tr><form id='".$row['ID']."'>
<td class='idcell'><input type='text' name='ID' readonly='readonly' value='".$row['ID']."' /></td>
<td>".$row['ArtName']."</td>
<td>".$row['ArtNumber']."</td>
<td><a href='/singlepost.php?ID=".$row['ID']."' title='Skriv ut ".$row['CustName']."'>".$row['CustName']."</a></td>
<td>".$row['CustContact']."</td>
<td>
<select name='SupStatus'>
<option value='".$row['SupStatus']."'>".$row['SupRealStatus']."</option>
<option value='01'>Mottagen</option>
<option value='02'>Lagd i korg</option>
<option value='03'>Beställd</option>
<option value='04'>Ankommen</option>
<option value='05'>Slutförd</option>
<option value='06'>Nekad</option>
</select>
<td>".$row['SupRealName']."</td>
<td>".$row['Date']."</td>
<td><textarea name='OrderOther' cols='40' rows='3'>".$row['OrderOther']."</textarea><input type='submit' value='Spara' name='Submit".$row['ID']."' onClick='updaterow()' /></td></form></tr>";}
还有updaterowajax.php文件
<?php
$ID = $_POST['ID'];
$OrderOther = $_POST['OrderOther'];
$SupStatus = $_POST['SupStatus'];
mysql_connect ("localhost", "root", "bilradio388") or die ('Kan inte ansluta till databasen för att: ' . mysql_error());
mysql_select_db ("bil_best");
mysql_query("UPDATE BestTable SET OrderOther = '$OrderOther' WHERE ID = '$ID'");
mysql_query("UPDATE BestTable SET SupStatus = '$SupStatus' WHERE ID = '$ID'");
echo "Dra på trissor"
?>
就是这些了!
编辑:正如我在下面的帖子中提到的,我曾经成功运行过它。我使用了建议的方法:onClick='return updaterow();' 它实际上是有效的。尝试了三次。然后我更改了一些代码,它停止工作了。我已经恢复到旧的工作状态,但是,不幸的是,它不再工作了:P 我想我可能错过了 ' 或 " 或 ; 或其他什么的,但是到目前为止,我还没有找到缺失的链接。如果我找到了,我会回报的。但是,上述的方法似乎有效。
编辑2:好吧,让"防止表单正常发送"的方式工作了(谢谢你的帮助),但是Firebug告诉我ID没有定义。我觉得这很奇怪,因为我没有更改从其输入到数据库时的任何内容。但是请明确一点:我错过了什么吗?上面的代码应该实际定义了ID的值,对吧?特别是因为在以GET方式发送时,代码似乎没有问题地定义它。
$.post()
而不是$.ajax
呢? - Paul Nikonowicz$.post()
只是$.ajax()
的缩写,其中type
被设置为'POST'
。没有任何区别。 - kapa