我一直在學習在GET請求中使用AJAX,它允許我通過服務器上的一組數據訪問PHP腳本。我希望能夠發送一個請求,告訴服務器運行代碼,這些代碼將打開一個應用程序並處理這個應用程序的一些信息。如何使用AJAX與服務器通信並運行代碼?
這裏是我用來首先與服務器通信的代碼,然後發送請求到服務器,並最終處理來自服務器的響應。
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject(){
var xmlHttp;
if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlHttp = false;
}
}
else
{
try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
xmlHttp = false;
}
}
if(!xmlHttp)
{
alert("cant create that object hoss");
}
else
{
return xmlHttp;
}
}
function process(){
if(xmlHttp.readyState == 0 || xmlHttp.readyState == 4) //State were object is free and ready to communicate with server
{
food = 'bacon';
xmlHttp.open("GET", "ExecuteMaya.php?food="+food,true); //Creates request that we are sending to server
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send(null);
}
else
{
setTimeout('process()', 1000);
}
}
function handleServerResponse(){
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200) //Means communication was successful
{
var xmlResponse = xmlHttp.responseText;
var xmldom = (new DOMParser()).parseFromString(xmlResponse, 'text/xml');
var text = xmldom.getElementsByTagName("response")[0];
var message = text.childNodes[0].nodeValue;
foodTextOutput = message;
setTimeout('process()', 1000);
}
else
{
alert('Something went wrong!');
}
}
}
這是我在學習如何使用AJAX時使用的PHP。當我將上述代碼中的'xmldom'變量打印到控制檯並檢查它時,出現以下錯誤 - 「第1行第2行錯誤:文檔結尾處的額外內容」。這可能是我原來的帖子的一個不同的問題,但我想我會提出這個錯誤發生。這對於'var message = text.childNodes [0] .nodeValue;'這一行產生了敲門效應這產生了錯誤 - 「Uncaught TypeError:無法讀取未定義的屬性'childNodes'」。
<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>':
echo '<response>';
$food = $_GET['food'];
$foodArray = array('tuna','bacon','beef','loaf','ham');
if(in_array($food, $foodArray))
echo 'We do have '.$food.'!';
elseif($food == '')
echo 'Enter a food you idiot';
else
echo 'Sorry punk we dont sell no '.$food.'!';
echo '</response>';
?>
,我一直在努力學習AJAX可能不相關的代碼,我只是想我會發布它的情況下,我可以使用一些這方面的代碼已經被寫入的。總之,我希望能夠發送一個布爾值,或者任何可以用AJAX生存的東西給服務器,告訴它運行一個腳本。然後,該腳本將打開一個Maya應用程序並運行我編寫的一些Python代碼。
預先感謝您!
所以 - 什麼是問題,問題在哪裏? – Jeff
@Jeff我不知道如何與服務器通信,以便我可以告訴它運行代碼。另外如果有人能告訴我爲什麼我說的錯誤正在發生。謝謝。 – skelto
只要你通過ajax調用一個php腳本(就像你已經做過的那樣),它就運行代碼! – Jeff