2012-11-20 47 views
0

我有一個PHP腳本,並插入部分如下(我知道,沒有PDO或mysqli的,這只是我個人的測試):用戶輸入插入DB通過AJAX導致空字段

<?php 
    $user = $_POST['user']; 
    $comments = $_POST['comment']; 

    $con = mysql_connect("localhost","root","") or die(mysql_error()); 
    mysql_select_db('localh',$con); 

    $query = mysql_query("INSERT INTO content (Title, Article) 
    VALUES('$user', '$comments')"); 

    if(!$query){die(mysql_error());} 

    mysql_close($con); 
?> 

如果我在表單動作中使用此腳本,它將正常工作,輸入值將被添加到數據庫中。

這裏的形式:

<form> 
    <p>User: <input type="text" id="user" /></p> 
    <p>Comment:<input type="text" id="comment" /></p> 
    <input type="button" id="submit" onClick="insertData();" /> 
</form> 

而AJAX的一部分,位於頭部標籤之間:

function insertData(){ 
    var ajaxRequest = new XMLHttpRequest(); 

    var usr = document.getElementById("user").value; 
    var cmnt = document.getElementById("comment").value; 

    ajaxRequest.open("POST", "insert.php", true); 
    ajaxRequest.send(usr, cmnt); 
} 

其結果將是數據庫中的空行。我不知道這是爲什麼,我無能爲力。

+4

只要你知道,請確保您使用它負責任。我將這篇評論發佈給將來的訪問者:[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護,[棄用過程](http://j.mp/Rj2iVR)已經開始。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+4

不要忘記主要的sqli漏洞。 –

+0

我不知道人們是否認真閱讀了這個通知......我祈禱他們這樣做。 – itachi

回答

2

其實,這是我真正推薦某人使用jQuery的唯一非常特殊的情況之一。

AJAX可能是最含糊不清地實現的功能。每個瀏覽器都有其實現的怪癖。 jQuery可以用來消除那些跨瀏覽器的不兼容性。

jQuery $.ajax documentation page

1

您還沒有實際發送您的變量的按鍵腳本:

ajaxRequest.send(usr, cmnt); 

所以你$_POST陣列將不包含user也不comment

雖然切換到jQuery是個好主意,你可以把你的變量,如:

var vars = encodeURI("user="+usr+"&comment="+cmnt); 
ajaxRequest.send(vars); 

但是你必須測試,因爲我通常使用jQuery我的Ajax請求。

+0

這應該解決它。 – itachi

+0

您還需要確保'usr'和'cmnt'正確地進行了URL編碼。這是jQuery爲您照顧的另一個細節(如果您正確使用它)。 – Barmar

+0

@Barmar但我編碼整個字符串'encodeURI' ... – jeroen

1

檢查,如果你在$_POST veriable usercomments數據recive,只需添加在你的PHP文件類似的東西

的print_r($ _ POST);出口();

如果您將在服務器端還沒有他們檢查ajax

如果還好吧檢查你的MySQL查詢:

+0

print $ _POST給我「Array()」,一個空數組。另外,我在$ user/$ comment = $ _POST ['user']/['comment'];我都得到了「Undefined index」。 PHP插入腳本中的聲明。 – ejx

+0

這意味着,你在你的ajax請求中有錯誤,閱讀文檔並查看你做錯了什麼。並嘗試使用jQuery ajax。 –