2016-06-14 60 views
0

我一直在學習在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代碼。

預先感謝您!

+1

所以 - 什麼是問題,問題在哪裏? – Jeff

+0

@Jeff我不知道如何與服務器通信,以便我可以告訴它運行代碼。另外如果有人能告訴我爲什麼我說的錯誤正在發生。謝謝。 – skelto

+1

只要你通過ajax調用一個php腳本(就像你已經做過的那樣),它就運行代碼! – Jeff

回答