Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript和ASP从AJAX中获取价值_Javascript_Ajax_Asp Classic - Fatal编程技术网

使用Javascript和ASP从AJAX中获取价值

使用Javascript和ASP从AJAX中获取价值,javascript,ajax,asp-classic,Javascript,Ajax,Asp Classic,我正在使用这个Ajax代码。但我不知道如何使用Javascript在服务器端asp上检索我的value1值 在我的服务器端,我想要 请帮忙!!!万分感谢 我知道使用PHP是可能的,但是如何使用javascript呢 <script> function ajaxNow(_data) { var xmlHttp; try { /* Firefox, Opera 8.0+, Safari */ xmlHttp=new XMLHttpRequest();

我正在使用这个Ajax代码。但我不知道如何使用Javascript在服务器端asp上检索我的value1值

在我的服务器端,我想要

请帮忙!!!万分感谢

我知道使用PHP是可能的,但是如何使用javascript呢

    <script>
function ajaxNow(_data)
{
  var xmlHttp;
  try
  {
    /* Firefox, Opera 8.0+, Safari */
    xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
    /* newer IE */
    try
    {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      /* older IE */
      try
      {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
        alert("Your browser is old and does not have AJAX support!");
        return false;
      }
    }
  }
  xmlHttp.onreadystatechange=function()
  {
    if(xmlHttp.readyState==4)
    {
      /* this puts the value into an alert */
      alert("Value read is: "+xmlHttp.responseText);
    }
  }
  xmlHttp.open("GET","ajax_file.asp?value1="+_data,true);
  xmlHttp.send(null);
}
</script>

函数ajaxNow(_数据)
{
var-xmlHttp;
尝试
{
/*Firefox、Opera 8.0+、Safari*/
xmlHttp=新的XMLHttpRequest();
}
捕获(e)
{
/*更新的IE*/
尝试
{
xmlHttp=新的ActiveXObject(“Msxml2.xmlHttp”);
}
捕获(e)
{
/*老年人*/
尝试
{
xmlHttp=新的ActiveXObject(“Microsoft.xmlHttp”);
}
捕获(e)
{
警告(“您的浏览器很旧,不支持AJAX!”);
返回false;
}
}
}
xmlHttp.onreadystatechange=函数()
{
if(xmlHttp.readyState==4)
{
/*这会将该值放入警报中*/
警报(“读取的值为:“+xmlHttp.responseText”);
}
}
open(“GET”,“ajax\u file.asp?value1=”+\u data,true);
xmlHttp.send(空);
}

当Ajax请求成功时,请求对象的querystring集合中将包含querystring变量

在服务器端可以这样工作:

<% var newdata = Request.QueryString("value1"); %>

URL encode
\u数据
nbquestions
变量<代码>请求。查询字符串(“param1”)将为您解码

JavaScript URL编码:

escape(_data);

您还可以使用VB脚本中的Server.URLEncode()方法。

这是一个非常好的ajax教程。一切都解释清楚了

你忘记了一个双引号:

xmlHttp.open("post","CmsAjax.asp",true)
要获取数据,请执行以下操作:

/* this puts the value into an alert */
alert(xmlHttp.responseText);
正确写入xmlHttp.send

  • 在处理数据之前,它不会检查您是否有
    200
    状态
  • 它无法保存数据以确保其URL安全
我建议使用一个库来处理XHR的东西,而不是重新发明轮子。如果您不使用大型库(如或),则会列出许多小型库

如何使用Javascript在服务器端获取值


它只是查询字符串数据,因此它将出现在
请求中。QueryString

您需要在服务器上对数据进行编码,然后在客户端对其进行解码。您可以为此使用JSON-RPC

这里有几个链接:

但如果只有一个值可以在ASP中编码为JSON,然后在JavaScript中解码,则不需要使用JSON-RPC

var array = JSON.parse(xmlHttp.responseText);

客户端Javascript无法查询基于服务器的数据库,原因很明显。根据您看起来正在做的事情,我建议您编写一个ASP,它使用VBA/C#/任何东西执行实际的查询,然后您可以正常地在客户端ajax调用中解析结果。

您可以让ASP页面将结果写为JSON格式,直接通过XMLHttpRequest对象读取,然后进行后续处理:

JSON示例

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};
然后,您可以在web浏览器中使用本机解析器或eval()(不推荐,严重!!!)来解析asp页面中写入的数据,并在javascript客户端代码中使用它

有关基本信息的更多信息

浏览器中的JSON:

  • 在Opera、Chrome和Safari中也可以使用

无论服务器端脚本输出什么,都将由AJAX请求获取。因此,如果AJAX请求某些内容,服务器端将执行腿部工作并从数据库中获取结果,然后将其输出

有很多关于如何做到这一点的教程。只需确保您的脚本得到了正确的保护,这样它就不会被滥用

//(javascript, ajax = xmlHttp)
如果您的响应文本是一个数组,您可以使用它

var myArray = eval(xmlHttp.responseText);
或者,如果它只是一个你可以使用的文本

var value = xmlHttp.responseText
另一种方法。这只是一个模板。如果使用jquery,则可以使用这种方法。我希望它能解决你的问题或给你一个想法

html部分:

<div id="willupdate"></div>
<div id="willupdate2"></div>

我该怎么做?抱歉,但我在这方面真的是新手:(使用URLencode(_data)?您能给我一个服务器端和客户端(encode-decode)的例子吗?我能做到这一点吗:xmlHttp.open(“Get”,“CmsAjax.asp?param1=“+escape(_data)+”和param2=“+escape(nbquestions),true)在服务器端我的request.querysting?感谢您的更新是您在VB脚本或JavaScript中进行的调用?xmlHttp.open(“Get”,“CmsAjax.asp?param1=“+server.URLEncode(_data)+”¶m2=“+server.URLEncode(nbquest?ions),true)像这样累了,无法工作:(否:(我不知道我做错了什么,尝试了post/get等10种不同的方式,但什么都没有。如果我只发送一个值,我可以让它与get一起工作,但当我发送两个值时,它就不工作了;在服务器端,我会执行value1=Request.QueryString(param1);value2=Request.QueryString(param2)对于编码,我需要使用:xmlHttp.send(“param1=“+escape(_data)+”和param2=“+escape(nbquestions))?谢谢你的帮助!我对ASP不太了解,无法自信地回答第一个问题。不,你不会使用
escape
escape
不推荐使用,你使用
encodeURIComponent
(我在回答中链接到了这个问题)。哦,对不起,我的错是:(.我还需要再问一个问题,像:try1=encodeURIComponent(“param1=”+_data+”¶m2=“+nbquestions”);然后再问xmlHttp.send(try1);或者我可以问xmlHttp.send(“param1=”encodeURIComponent(+_data)+“¶m2=”encodeURIComponent(nbquestions));谢谢,抱歉,但我对这一点非常陌生,非常迷茫:PYou需要编码数据,而不是整个URI。编码整个URI会将
=
&
转换为数据,这样它们就不再是单独的键/值对。xmlHttp.responseText不是我从服务器收到的内容吗?我需要在服务器上有这两个值在r端,我运行了一个函数,将值放入数据库SQLI,我不确定我们的意思是否相同
 $(document).ready(function() {

getValue("serverurl",updateName)
getValue("serverurl",updateSurName)
 });

function updateName(name){
 $("#willupdate").text(name)
}


function updateSurName(name){
 $("#willupdate2").text(name)
}

function updateSurName(name){
 $("#willupdate").text(name)
}

function getValue(url,opt_onRecieved){
    if( !url || url == ""){
        alert("request url error");
        return;
    }

    $.ajax({
        type:"POST",
        url: url,
        dataType:"json",
        success: function(data){
            opt_onRecieved(data);

        }
    });
}