Javascript 如何在JS/jQuery函数中使用返回的AJAX数据

Javascript 如何在JS/jQuery函数中使用返回的AJAX数据,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有AJAX(我想)从服务器调用返回数据 function showCustomer(str) { var xmlhttp; if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari

我有AJAX(我想)从服务器调用返回数据

function showCustomer(str) {
    var xmlhttp;
    if (str=="") {
        document.getElementById("txtHint").innerHTML="";
        return;
    }

    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "getcustomer3.asp?q=" + str, true);
    xmlhttp.send();
}
调用将返回以下内容:

<script>var CC2=101;var CC4=105;</script>
我从ButtonOnClick事件调用该函数,并等待单击所述按钮,直到返回数据,我认为这会起作用

我正在努力将变量写回页面以加载到函数中。我有一种强烈的感觉,我正在以一种完全错误的方式进行这件事。有什么指引我走上正确的道路吗

提前谢谢

编辑:这是返回值的代码:

response.write("<script>")
dim counter: counter = 0
do until rs.EOF
  for each x in rs.Fields
    counter = counter + 1
    'Use Mod() to check counter is even
    If counter Mod 2 = 0 Then response.write "var CC" & counter & "=" & x.value & ";"
  next
  rs.MoveNext
loop
response.write("")
response.write("</script>")
response.write(“”)
变暗计数器:计数器=0
直到R.EOF为止
对于rs.字段中的每个x
计数器=计数器+1
'使用Mod()检查计数器是否为偶数
如果计数器Mod 2=0,则response.write“var CC”&计数器&“=”&x.value&“;”
下一个
下一个
环
回答。写(“”)
回答。写(“”)

首先,您的web服务器不能返回json结构而不是:

<script>var CC2=101;var CC4=105;</script>
这样,访问这些变量就会容易得多。否则,您将需要解析原始数据结构以提取信息,或者使用
eval(…)
,这会更加难看

使用JQUERY,您的ajax调用将如下所示:

{
   "CC2" : 101,
   "CC4" : 105
}
$.ajax({
    type: "GET",
    url: "someurl",
    datatype: "json",
    data: ?,
    success: function(jsonServerData){

        var CC2 = jsonServerData.CC2;
        var CC4 = jsonServerData.CC4;

    },
    error: function(status, xht, err){
    }
});

请参阅

您认为您有ajax??发布你的代码@ElliotM更新了,对不起!我试图不夸大这个问题,但我想这是很重要的信息Hahay您的AJAX代码在任何时候都没有调用
unhideCC()
?这是很重要的信息,因为它向我们表明您正在以非常艰难的方式来做这件事!如果您使用jquery,请查看我建议使用jquery制作ajax的原因(以及下面的答案),因为jquery“免费”将返回值解析为本机数据,否则您将不得不从调用返回中提取值。我在问题中添加了服务器调用。如果我只是更改了response.write设置以返回您列出的格式,它会工作吗?您的服务器是否使用ASP.NET?几乎每种语言都有内置函数将对象转换为JSON字符串。这是行不通的,因为ajax调用不会自动使用返回值提取所需数据。如果按照这里的建议使用jquery重新编写ajax调用,它将完全满足您的要求。@TchiYuan是的,服务器正在使用ASP。NET@Brett尝试此链接了解如何从ASP.NET返回json:
$.ajax({
    type: "GET",
    url: "someurl",
    datatype: "json",
    data: ?,
    success: function(jsonServerData){

        var CC2 = jsonServerData.CC2;
        var CC4 = jsonServerData.CC4;

    },
    error: function(status, xht, err){
    }
});