我在拨打 API 电话和收到 JSON 回复时遇到 JavaScript 问题
I'm having JavaScript issues making an API call and receiving the JSON response
我在本地主机上托管了一个 RESTful API,当在浏览器中 运行 时,returns 是这样的:
{
"ContactMethod": "Email",
"Zip": "68504",
"State": "Illinois",
"LastName": "McCarthy",
"BestTimes": "Afternoon",
"Address": {
"Zip": "68504",
"State": "Illinois",
"City": "Haylon",
"Line1": "1388 Dooleys Terrace",
"Line2": "",
"Line3": ""
},
"BestDays": "Wednesday",
"FirstName": "Roy",
"Email": "rmccarthy@yah00.com",
"Phone": "4812212563"
}
我可以请求纯文本或应用程序 JSON。我的 API 正在使用这种类型的 JSON:http://json.org/example。 请注意,以上为模拟数据,没有任何人的真实联系方式。
我有一个用 JavaScript 和 jQuery 1.11.3 编写的小部件,我希望它发出 GET 请求并使用 JSON 响应。
我试过这个:
var getJSON = function(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
resolve(xhr.response);
} else {
reject(status);
}
};
xhr.send();
});
};
getJSON('myurl').then(function(data) {
alert(data.result);
警报从未发生。我试过这个,从这里开始:http://www.w3schools.com/json/json_http.asp
function getUserDetails(){
var request = new XMLHttpReqest();
var url = "myurl";
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var myArr = JSON.parse(request.responseText);
alert(myArr);
}
}
request.open("GET", url, true);
request.send();
}
alert(myArr)
从来没有发生过,所以请求一定有问题,对吧?我尝试此操作时也没有收到警报:
function getUserDetails(){
$.getJSON("myurl", function(result){
$.each(result, function(i, field){
alert(field);
})
});
}
我也试过到处输入 jQuery.parseJSON()
,但没有成功。我的团队正在努力完成一位同事在离开前无法完成的事情,而我们 none 对 JavaScript 了解很多。如果能得到任何帮助,我们将不胜感激!
EDIT1:根据评论的建议,我在 Chrome DevTools 中检查了请求。状态为 200 OK。
EDIT2:使用这个,我们能够得到一个警报,内容为 [object Object]
。
function getUserDetails(){
var data = $.getJSON("myurl");
//var obj = $.JSON.parse(data);
//var obj = eval ("(" + data + ")");
alert(data);
return data;
}
在小部件中,它给了我们一些乱码:
这么近了,对吧?当我们执行任何一条注释掉的行时,它又回到不工作的状态。
您没有返回数组。所以,$.each 没有意义。
试试这个:
var url = "your_url";
function getUserDetails(){
$.getJSON(url, function(result){
alert(result);
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
})
.always(function() {alert( "complete" );});
}
我在本地主机上托管了一个 RESTful API,当在浏览器中 运行 时,returns 是这样的:
{
"ContactMethod": "Email",
"Zip": "68504",
"State": "Illinois",
"LastName": "McCarthy",
"BestTimes": "Afternoon",
"Address": {
"Zip": "68504",
"State": "Illinois",
"City": "Haylon",
"Line1": "1388 Dooleys Terrace",
"Line2": "",
"Line3": ""
},
"BestDays": "Wednesday",
"FirstName": "Roy",
"Email": "rmccarthy@yah00.com",
"Phone": "4812212563"
}
我可以请求纯文本或应用程序 JSON。我的 API 正在使用这种类型的 JSON:http://json.org/example。 请注意,以上为模拟数据,没有任何人的真实联系方式。
我有一个用 JavaScript 和 jQuery 1.11.3 编写的小部件,我希望它发出 GET 请求并使用 JSON 响应。
我试过这个:
var getJSON = function(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
resolve(xhr.response);
} else {
reject(status);
}
};
xhr.send();
});
};
getJSON('myurl').then(function(data) {
alert(data.result);
警报从未发生。我试过这个,从这里开始:http://www.w3schools.com/json/json_http.asp
function getUserDetails(){
var request = new XMLHttpReqest();
var url = "myurl";
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var myArr = JSON.parse(request.responseText);
alert(myArr);
}
}
request.open("GET", url, true);
request.send();
}
alert(myArr)
从来没有发生过,所以请求一定有问题,对吧?我尝试此操作时也没有收到警报:
function getUserDetails(){
$.getJSON("myurl", function(result){
$.each(result, function(i, field){
alert(field);
})
});
}
我也试过到处输入 jQuery.parseJSON()
,但没有成功。我的团队正在努力完成一位同事在离开前无法完成的事情,而我们 none 对 JavaScript 了解很多。如果能得到任何帮助,我们将不胜感激!
EDIT1:根据评论的建议,我在 Chrome DevTools 中检查了请求。状态为 200 OK。
EDIT2:使用这个,我们能够得到一个警报,内容为 [object Object]
。
function getUserDetails(){
var data = $.getJSON("myurl");
//var obj = $.JSON.parse(data);
//var obj = eval ("(" + data + ")");
alert(data);
return data;
}
在小部件中,它给了我们一些乱码:
这么近了,对吧?当我们执行任何一条注释掉的行时,它又回到不工作的状态。
您没有返回数组。所以,$.each 没有意义。
试试这个:
var url = "your_url";
function getUserDetails(){
$.getJSON(url, function(result){
alert(result);
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
})
.always(function() {alert( "complete" );});
}