2017-07-18 59 views
0

我有一個經典的ASP代碼,我想將一個變量terms從Ajax傳遞給VB腳本函數。我嘗試了下面的代碼,但它不起作用。傳遞一個變量從Ajax到經典ASP的VB腳本功能

這是我第一次使用ajax編寫代碼。所以我知道這是非常基本的..但我找不到錯在哪裏。有誰能幫我解決嗎?

<script type="text/Javascript">   
    $(document).ready(function(){ 
var availableCode = new Array();    

function customFilter(terms) { 
       $.ajax({ 
       type: "POST", 
       url: "Test.asp", // This asp file name itself 
       data: {"strUserInput": '"' + $("#terms").val() + '"' }, 
       cache: false, 
       success: function() { 
         alert ("returned from server side"); 
       } 
      }); 

      <% 
      Dim idxJs 
      for idxJs = 0 to 19 
      %> 
       availableCode[<%=idxJs %>] = unescape('<%= Escape(codeList(idxJs)) %>'); 

      <% next %> 

       return availableCode; 
      }; 

      $("#frmBillCode").autocomplete({ 
       multiple: true, 
       mustMatch: false, 
       minLength: 4, 
       delay: 100, 
       search: function (event,ui) { 
       window.pageIndex = 0; 
       }, 
       source: function (request, response) { 
       response(customFilter(request.term)); 
       } 
      }); 
     }); 
</script> 

<% 
    Dim strUserInput 
    strUserInput = Request.Form("strUserInput") 
    Document.write(strUserInput) 
%> 
+3

你不行。 JavaScript運行客戶端,VB運行服務器端。 – dave

+1

您不能直接從客戶端調用服務器端代碼,您需要使用ajax –

+0

@dave感謝您的及時響應。我擔心,但我是一個網頁開發初學者。你介意給我提供一些參考嗎? – Chrissa

回答

0

由於這個邏輯在我們的系統中不起作用,我改爲使用延遲加載,現在它正在處理我們的業務需求。再次感謝大家的建議。

2

它可能不工作,因爲alert語句無效。你試圖提醒一個字符串w /出引號!如果你想做你正在嘗試的東西(在這種情況下,警報是無用的,因爲它是在ajax調用之後,並且無法訪問存儲在strUserInput中的新值),所以需要引用它:

alert('<%=strUserInput%>'); 

但是,你不需要它,我只是想解釋你爲什麼可能失敗。

讓我們試試這個:

<% 
    Dim strUserInput 
    strUserInput = Request.Form("strUserInput") 
    if strUserInput <> "" then  '-- we know it's an ajax call 
     Response.Write(strUserInput) 
     Response.End  '-- when doing ajax calls, it's good to add this line so that nothing after this line is sent back to the client 
    end if 
%> 

<script type="text/Javascript">   
    $(document).ready(function(){ 
     customFilter();  // you need to call your function on page load for it to do something 
     function customFilter() { 
      var terms = 'abc';  // what is this line for? 
      $.ajax({ 
       type: "POST", 
       url: "Test.asp", << This asp file name 
       data: {strUserInput: '"' + $("#terms").val() + '"' }, // removed quotes from strUserInput 
       cache: false, 
       success: function(result) {  // result is just a variable, it can be named anything 
         alert (result); 
       } 
      }); 
     } 
    }); 
</script> 

如果沒有仍然發生,瞭解你的開發者控制檯,在大多數瀏覽器,你可以打F12,它會拿出。選擇CONSOLE標籤(在Chrome中),如果它們存在,您將看到任何javascript錯誤。

祝你好運!

+0

非常感謝您的幫助。我修改了我的代碼併發布了更多詳細信息代碼,因爲我正在使用此邏輯來自動完成文本框以從數據庫中檢索數據。它不會在控制檯下拋出任何錯誤,但好像它沒有將變量strUserInput正確地傳遞給VB腳本。查詢忽略strUserInput的選擇條件。我可以對元素:URL使用相同的ASP代碼嗎? – Chrissa