2013-11-24 24 views
-1

我正在使用ASP classic和Javascript。我有一個JavaScript函數,我使用庫來創建PDF,但爲了從數據庫獲取值,我使用AJAX。當我進行AJAX調用時,如何返回數組或值的散列表,或者甚至將每個變量分別返回給我打電話的函數?如何使用ASP經典返回一個包含Ajax值的數組

編輯: 那些我想從AJAX調用中獲得的值,我想稍後在相同的函數中使用來創建pdf。

編輯:

功能make_me_a_pdf(ID,izbor,prejemnik){

var ajaxRequest; // The variable that makes Ajax possible! 
    var spr; 

try{ 
    // Opera 8.0+, Firefox, Safari 
    ajaxRequest = new XMLHttpRequest(); 
} catch (e){ 
    // Internet Explorer Browsers 
    try{ 
     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
     try{ 
      ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e){ 
      // Something went wrong 
      alert("Your browser broke!"); 
      return false; 
     } 
    } 
} 

ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 

     spr = ajaxRequest.responseText; 
     document.write(spr); 

    } 

} 

ajaxRequest.open("GET", "getPrejetoNarPodatki.asp", true); 
ajaxRequest.send(null); 

這是我寫的,使一個AJAX調用的代碼。在getPrejetoNarPodatki.asp是writen的唯一事情是:

的Response.Write( 「TRALALA」)

...在這種情況下,節省 「TRALALA」 變量SPR,我可以使用它...我的問題是如何獲得更多的值,所以我可以在函數make_me_a_pdf()中使用它們。

+0

任何代碼或東西向我們展示? –

+0

好吧,我更新了這篇文章:) – MoOoG

+1

似乎你問如何返回一個JSON值,如{「prop1」:「value1」,「prop2」:「value2」} –

回答

0

好吧,對於每個人都會搜索這個問題......我解決了它!

我使用JSON方法來獲取值。我把這個成JavaScript函數:

ajaxRequest.onreadystatechange = function(){ 

    if(ajaxRequest.readyState == 4){ 

    var txt = ajaxRequest.responseText; 
    var obj = eval ("(" + txt + ")"); 
    alert(obj.employees[1].firstName);  
    } 
} 

在AJAX文件,我把這個代碼行:

text = "{""employees"":[{""firstName"":""John"",""lastName"":""Doe""},    {""firstName"":""Anna"",""lastName"":""Smith""}]}" 

response.write(text) 

請務必使用雙引號。 eval()函數使用JavaScript編譯器來解析JSON文本並生成一個JavaScript對象(來自w3schools)。在警報中打印的名稱是「安娜」

1

返回一個JSON數組,它最終可以使用傳統的ASP生成純文本。

0

您可能需要在base64編碼字符串之後將PDF響應作爲URI編碼的字符串發送,並在客戶端對其進行適當解碼。 PDF響應是如何從服務器端發送的任何示例?

ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 

     var pdfText = decodeURIComponent(ajaxRequest.responseText); 

     var pdf = base64DecToArr(pdfText); 
     document.write(pdf); 
    } 

} 

/* Array of bytes to base64 string decoding */ 

function b64ToUint6 (nChr) { 

    return nChr > 64 && nChr < 91 ? 
     nChr - 65 
    : nChr > 96 && nChr < 123 ? 
     nChr - 71 
    : nChr > 47 && nChr < 58 ? 
     nChr + 4 
    : nChr === 43 ? 
     62 
    : nChr === 47 ? 
     63 
    : 
     0; 

} 

function base64DecToArr (sBase64, nBlocksSize) { 

    var 
    sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length, 
nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2)/nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen); 

    for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) { 
    nMod4 = nInIdx & 3; 
    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4; 
    if (nMod4 === 3 || nInLen - nInIdx === 1) { 
     for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { 
     taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255; 
     } 
     nUint24 = 0; 

    } 
    } 

    return taBytes; 
}