2012-10-25 66 views
1

沒有JQUERY。我正在使用類似於JSP,ASP和ZXZ的peoplecode。 Ajax請求被觸發就是我試圖拉從這個腳本文字的「Hello World」 ...AJAX和Javascript無法正常工作

Function IScript_AJAX_Test() 
    %Response.Write("<div id='hello'>Hello World</div>"); 
End-Function; 

我的JavaScript功能,使AJAX調用看起來像這樣...

function AJAX_test (ajax_link) { 

    if (typeof XMLHttpRequest == 'undefined') { 
      XMLHttpRequest = function() { 
       try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) {} 
       try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) {} 
       try { return new ActiveXObject("Msxml2.XMLHTTP"); }  catch(e) {} 
       try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} 

      throw new Error('This browser does not support XMLHttpRequest or XMLHTTP.'); 
      }; 
     } 
    var request = new XMLHttpRequest(); 
    request.onreadystatechange = function() { 
    if (request.readyState == 4 && request.status == 200) { 

     document.getElementById('ajax').innerHTML = request.responseText.document.getElementById('hello').innerHTML; 
     //document.getElementById('ajax').innerHTML = 'Testing'; 
    } 
    } 
    request.open('GET', ajax_link, true); 
    request.send(); 

    //document.getElementById('ajax').innerHTML = ajax_link; 
} 

正如你能在這方面看到..

document.getElementById('ajax').innerHTML = request.responseText.document.getElementById('hello').innerHTML; 

...我想從ID獲取innerHTML來抓取的文本。雖然這不起作用。當我點擊按鈕什麼都沒有發生。

我試着用下面的線,但它返回一個全新的頁面,該ID將是(因爲仁科的可能)...

document.getElementById('ajax').innerHTML = request.responseText; 

有人可以幫我實現這個...

+0

如果您知道響應中包含的內容,則可以使用正則表達式從responseText中選擇所需的信息。所以問題是:你知道你在尋找什麼? :-) –

回答

0

我想你的代碼和它的作品對我來說,與

Function IScript_AJAX_Test() 
    %Response.Write("<div id='hello'>Hello World"); 
End-Function; 

,並在JavaScript

document.getElementById('ajax').innerHTML = request.responseText; 

請務必與內容的servlet(PSC),而不是門戶Servlet(PSP ),例如 'http:// peoplesofturl/psc /ps/EMPLOYEE/HRMS/s/WEBLIB_Z_SYS.FUNCLIB.FieldFormula.IScript_AJAX_Test',否則你會得到包裹在人人門戶中的響應。

您可以使用GenerateScriptContentRelURLGenerateScriptContentURL函數從peoplecode生成url。

0

使簡單:

Function IScript_AJAX_Test() 
    %Response.Write("Hello World"); 
End-Function; 

的Javascript:

document.getElementById('ajax').innerHTML = request.responseText; 
+0

你的迴應不是一個有效的文件元素,它只是一個字符串。所以你不能把它當作真正的div來處理。瀏覽器將僅將其視爲字符串。 –

+0

我最初嘗試過,但它返回的ID應該是一個完整的新頁面...我相信這是因爲PEoplesoft。 –

+0

您必須確保'ajax_link'頁面僅輸出您的回覆。 –

0

Ajax可能有兩種類型。一個是服務器端,另一個是客戶端。您正試圖從客戶端獲取數據。在這種情況下,ajax只獲取頁面的整個頁面結果而不是一部分。您將有整個頁面結果(HTML輸出),如果你寫

document.getElementById('ajax').innerHTML = request.responseText; 

但你不能提取僅僅只有另一個頁面的某些部分的innerHTML一部分。在這種情況下,你會得到整個頁面。

+0

那麼我怎樣才能獲得Hello World部分? –

+0

如果您從數據庫獲取數據,但不在客戶端,則可能在服務器端。最多你可以做只帶有body或html結果的頁面「Hello world」。然後你可以取 – polin