2017-07-18 64 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