2012-12-06 33 views
1

讓說我提交數據的形式與下面的代碼在Javascript中捕獲表單響應?

var xhr = new XMLHttpRequest(), formData = new FormData(); 
formData.append("img", img); 
formData.append("user", localStorage["username"]); 
formData.append("pass", localStorage["password"]); 

xhr.onreadystatechange = function (event) { 
    if (xhr.readyState === 4 && xhr.status === 200) { 
     var value = xhr.responseText; // value should equal "1234" 
     alert("value = " + value); 
    }else{ 
    alert("none"); 
} 
}; 
xhr.open("POST", "http://joubin.me/uploads3/upload_file.php", true); 
xhr.send(formData); 

upload.php的步驟完成後,它重定向到另一個名爲頁面giveid.php,它顯示的僅僅是文本字符串用一個id

1234

我如何使用JavaScript捕獲這個確切的ID。

請記住,不同的upload.php重定向在giveid.php上會有不同的id號碼嗎?

我查看了xmlhtml響應,但無法弄清楚。

這裏是什麼樣的形式去

$password = $_REQUEST['pass']; 
$username = $_REQUEST['user']; 
$image = $_REQUEST['img']; 
echo $password; 
echo "<br/>"; 
echo $username; 
echo "<br/>"; 
echo $image; 
$con = mysql_connect("localhost","ya","right"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
     echo "could not connect"; 
    } 
$asql = "SELECT * FROM `ashkan`.`users` where user='$username' and pass='$password';"; 

$result = mysql_query($asql); 
echo $result; 
// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

echo $count; 

echo 11; 
if($count == 1){ 
$sql = "INSERT INTO `ashkan`.`goog` (`user`, `pass`, `img`) VALUES ('$username', '$passwo$ 
} 
mysql_query($sql); 
mysql_close($con); 
header('Location: giveid.php') ; 

,這裏是giveid.php

1234 

的內容任何幫助將是巨大的。

感謝

+1

有沒有你不使用JavaScript庫的理由如jQuery處理Ajax請求? –

+3

^柺杖沒有修復 –

+0

沒有必要重新發明輪子。使用'$ .post(url,fn)' – Ibu

回答

2

您需要使用xhr.onreadystatechange檢索來自服務器的響應。

這樣的事情可能會奏效。

var value; 
var formData = new FormData(); 
formData.append("img", img); 
formData.append("user", localStorage.username); 
formData.append("pass", localStorage.password); 

var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function (event) { 
    if (xhr.readyState === 4 && xhr.status === 200) { 
     value = xhr.responseText; // value should equal "1234" 
     alert("value = " + value); 
    } 
}; 
xhr.open("POST", "upload.php", true); 
xhr.send(formData); 

資訊:http://www.tizag.com/ajaxTutorial/ajaxxmlhttprequest.php

記住header()函數必須在發送任何實際輸出之前調用。所以擺脫你在PHP文件中的所有回聲。一旦你回聲,然後啓動輸出緩衝區的響應客戶端。

資訊:http://php.net/manual/pt_BR/function.header.php

我想這應該是你的PHP頁面上只有迴音。

echo include('giveid.php'); 

嘗試使用谷歌瀏覽器開發工具網絡標籤查看您的PHP網頁的響應。

  • 啓動谷歌Chrome,
  • 命中F12,
  • 點擊網絡選項卡,
  • 重新載入網頁,
  • 點擊Ajax響應頁面上,
  • 點擊預覽可查看響應。

資訊:https://developers.google.com/chrome-developer-tools/docs/network

+0

1234值正在常規html頁面上顯示爲文本。這是什麼? – Cripto

+0

如果您也發佈了PHP代碼,這將會很有幫助。 –

+0

這是一個好主意。我剛剛做到了。請看上面。 – Cripto

1

xhr documentation

獲得xhr.response然後解析它。

我們通常會返回一個json字符串,以便js可以輕鬆解析它。

googled xhr example 是這樣的:

xhr.onreadystatechange=function() 
{ 
    if (xhr.readyState!=4 || xhr.status!=200) 
     return; 
    var resp = xhr.responseText; 
    var parsed = eval(resp); 
} 
+0

是的,那是我的問題,但是,我不知道如何捕捉這個特定的響應。你能否詳細說明。 – Cripto