在Javascript中捕获表单响应?

时间:2012-12-06 06:08:07

标签: php javascript html

假设我使用以下代码将数据提交到表单

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

任何帮助都会很棒。

由于

2 个答案:

答案 0 :(得分: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');

尝试使用Google Chrome开发人员工具网络标签查看您的php网页的响应。

  • 启动Google Chrome,
  • 点击f12,
  • 点击网络标签,
  • 重新加载您的页面,
  • 点击ajax响应页面,
  • 点击预览查看回复。

信息:https://developers.google.com/chrome-developer-tools/docs/network

答案 1 :(得分: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);
}