【发布时间】:2016-11-30 06:36:30
【问题描述】:
我正在制作这样的 ajax-jquery 函数:
$('.change').live('click',function(){
$('html, body').animate({
scrollTop: $("h4").offset().top
}, 2000);
$('h4').text("Edit Your Video Here :");
$('.drop').text("Drop Your Updated Video Here...");
$('.btn').text("Update");
var videoID = this.id;
xhr1 = new XMLHttpRequest();
//initiate request
xhr1.open('post','beforeUpdate.php',true);//true for asynchronous
xhr1.setRequestHeader('Content-Type',"multipart/form-data");
xhr1.setRequestHeader('vidID',videoID);
xhr1.onreadystatechange = handleResponse;
xhr1.send(null);
});
function handleResponse()
{
if(xhr1.readyState==4)//processing done
{
if(xhr1.status == 200)//response okie
{
var xmlResponse = xhr1.responseXML;
root= xmlResponse.documentElement;
var id = root.getElementsByTagName("ID");
var name = root.getElementsByTagName("Nama");
console.log("ID From Server : "+id);
console.log("Name From Server : "+name);
}
}
}
所以当我的按钮{class=change}被点击时,它会发送一个 ID 到 beforeUpdate.php,在这个 php 文件中我生成一个 XML 文件将被发送回xhr1.onreadystatechange = handleResponse;这是我的 beforeUpdate。 php文件:
<?php
require 'databaseConnection.php';
openConnection();
$headers = apache_request_headers();
$ID = $headers['vidID'];
$hasil = mysql_query("SELECT * FROM video_management where id=$ID");
$result = mysql_fetch_array($hasil);
//$test = "ID = ".$ID."\r\n"."Name = ".$result['Nama'];
//fwrite($myfile, $test);
//fclose($myfile);
//Generating XML FILE
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';
echo '<ID>';
echo $ID;
echo '</ID>';
echo '<Name>';
echo $result['Nama'];
echo '</Name>';
echo '<Type>';
echo $result['Type'];
echo '</Type>';
echo '<Path>';
echo $result['videoPath'];
echo '</Path>';
echo '</response>';
closeConnection();
?>
从数据库中获取数据没有问题,我可以获取所有数据并将它们放入关联的xml元素中。
那么问题来自root= xmlResponse.documentElement;据说Uncaught TypeError: Cannot read property 'documentElement' of null,所以我在这里做错了什么......?
太感谢了...! :)
注意: 我的浏览器是chrome
【问题讨论】:
-
xhr1.responseText带给你什么? -
哇哦……是啊……我从 responseText 中找到了一些东西……给我片刻,Squint 先生……
-
实际上 responseText 包含我的 xml 响应...这是怎么回事... ?? :v
-
通常你会在打开连接之前拥有 readystatechange 处理程序
-
我已经这样做了,但它返回一个 [object HTMLCollection] 所以 console.log 看起来像这个 ID From Server : [object HTMLCollection] 和 Name From Server : [object HTMLCollection]
标签: javascript php jquery ajax