Javascript 返回未设置Json编码
我有一个简单的ajax请求,它得到一个json编码数组,但它一直告诉我它没有设置。。。我想我把报税表放错地方了,但我不确定我把它放在哪里了。。。这是我的职责:Javascript 返回未设置Json编码,javascript,ajax,Javascript,Ajax,我有一个简单的ajax请求,它得到一个json编码数组,但它一直告诉我它没有设置。。。我想我把报税表放错地方了,但我不确定我把它放在哪里了。。。这是我的职责: //Browser Support Code function ajaxFunction(url,data){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari
//Browser Support Code
function ajaxFunction(url,data){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var response = ajaxRequest.responseText
}
}
queryString = "?dta="+data;
ajaxRequest.open("GET", url + queryString, true);
ajaxRequest.send(null);
return(response);
}
然后我像这样调用函数:
var result = ajaxFunction('call.php','1');
alert(result);
响应在控制台中工作,它表示:
{"stage1":"550","stage2":"1500","stage3":"2000","total":"1"}
但我得到的是:反应还没有定义
有什么想法吗?响应未定义有两个原因:
- 语法:它在内部函数中定义,因此在外部范围中不可见。所以您的
实际上是返回(window.response)返回(response)
- 逻辑:响应是在异步回调中设置的,因此当同步函数返回时,即使在ajaxFunction本身中定义它,也不会设置响应
success(data,textStatus,jqXHR)
作为参数传递给函数,检查如何返回结果
您还可以通过为open call check或的第三个(isAsync)参数传递“false”来强制同步请求。因此,如果我将返回值放在if(ajaxRequest.readyState==4){}中,那么就可以了吗?太好了,现在我甚至更困惑了:p尽管我已经计算出来了!:(我所发现的只是jquery示例——看看jquery示例并将其复制到您的代码中很烦人。您正在尝试手动执行jquery.ajax调用——因此,看看如何实现这一点并没有错。MDN link也有大量使用原始XmlHttpRequest的示例。我想我只是简单地问了一个问题就可以实现它。我返回了json_编码,但如何实现它呢我是否将其转换回一个数组以使用?JSON.parse(或者对于较旧的浏览器,除了jQuery.parseJSON之外,还有实现)。