我的電腦上有一個本地apache 2.2服務器。我在我的系統上使用PHP 5和MySQL 5.0。我在我的MySQL數據庫中創建了一個名爲html5的表,它有一列和一行包含任意字符串。無法在Firefox和Chrome中從PHP頁面獲取XML響應
我創建了一個名爲sample.php的PHP頁面,它連接到我的MySQL數據庫並提取上表的信息並將其作爲XML文件返回。
<?php
if(!$dbconnect = mysql_connect('localhost', 'root', 'password')) {
echo "Connection failed to the host 'localhost'.";
exit;
} // if
if (!mysql_select_db('mysampledb')) {
echo "Cannot connect to database 'mysampledb'";
exit;
} // if
$table_id = 'html5';
$query = "SELECT * FROM $table_id";
$dbresult = mysql_query($query, $dbconnect);
// create a new XML document
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('note');
$root = $doc->appendChild($root);
// process one row at a time
while($row = mysql_fetch_assoc($dbresult))
{
// add node for each row
$occ = $doc->createElement($table_id);
$occ = $root->appendChild($occ);
// add a child node for each field
foreach ($row as $fieldname => $fieldvalue)
{
//create child element in xml file
$child = $doc->createElement($fieldname);
$child = $occ->appendChild($child);
//add database content into the child element created above
$value = $doc->createTextNode($fieldvalue);
$value = $child->appendChild($value);
}// foreach
}// while
// get completed xml document
$xml_string = $doc->saveXML();
echo $xml_string;
?>
我曾經在一個單獨的目錄,使一個簡單的請求以上PHP頁面按鈕的點擊,並試圖搶響應,並顯示爲警告創建的HTML5頁面。
這是HTML5頁面: -
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<button onclick="myFunc()">Click me</button>
<script type="text/javascript">
function myFunc()
{
$.ajax(
{
url:"http://localhost/sample.php"+"?randVar="+Math.random(),
type: "GET",
dataType: "text/xml",
success:function(result)
{
alert(result);
}
});
}
</script>
</body>
</html>
但是當我運行此頁我得到的只有在IE9的響應。在Firefox和Chrome中,我看到爲空警報。
在嘗試這種方式之前,我也嘗試過使用XMLHttpRequest對象,但即使如此,我只能在IE9上獲得響應。
function myFunc()
{
var xmlhttp, xmlDoc;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
try
{
xmlhttp.open("GET","http://localhost/sample.php"+"?randVar="+Math.random(),false);
xmlhttp.send();
xmlDoc=xmlhttp.responseText;
}
catch(e)
{
alert(e.message);
}
alert(xmlDoc);
}
在Firefox中,catch塊返回 「失敗」,並在Chrome中,警報說XMLHttpRequest的異常101。
PS: -
保持HTML文件相同的htdocs文件夾的sample.php頁面將解決這個問題,但其中服務器是一個獨立的計算機上它不可能在現實世界不同的網絡。所以我不在尋找這個建議。
在ajax調用中,使async =「true」或「false」沒有任何區別。
這是IE9的響應: -
螢火蟲: -
任何人都可以請您提供一個解決方案嗎?我需要一個不好的。
你可以張貼在螢火/ Chrome檢查的控制檯Ajax請求的響應? –
卡蘭,我得到的答覆200好。 – Kumar
也許看看Cross Origin資源共享 - > http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing – Crisp