Javascript 如何在JS/jQuery函数中使用返回的AJAX数据
我有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
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){
}
});