我发帖是因为我花了很多时间来理解为什么我的代码不起作用......
我尝试用jQuery获取json数据,我看到一些例子工作得非常好但是我的不... ...
$("#go").click(function(){
var sumName = $("#playername").attr("value");
var region = $("#playerregion").attr("value");
console.log(sumName);
console.log(region);
/********* Working without this part *********/
if ( sumName !== "" ) {
$.ajax({
url: "https://euw.api.pvp.net/api/lol/" + region + "/v1.4/summoner/by-name/" + sumName + "?api_key=MYAPIKEYIDONTSHOWYOU",
type: "GET",
dataType: "json",
data: { }
});
success: function (json) {
var sumNameNoSpace = sumName.replace(" ", ""),
sumID = json[sumNameNoSpace].id;
console.log(sumID);
}
error: function (XMLHttpRequest, textStatus, errorThrown) ({
alert("error getting Summoner data!");
});
}
else {}
/*************************************************/
$("#lolskill iframe").attr("src", "http://www.lolskill.net/game/"+ region +"/"+ sumName);
$("#lolnexus iframe").attr("src", "http://www.lolnexus.com/"+ region + "/search?name="+ sumName +"®ion="+ region);
})
有关更多信息,我尝试从图例联盟API系统中获取json数据,我用hmtl用户可以给出summoners名称(id playername)+这个区域(id playerregion)。我想在json中获取数据id,但我的代码会使我认为的所有文件都出错。
我尝试了很多不同的语法但没有结果。我现在已经开始使用javacript / jQuery 4天了,我觉得完全迷失了。
请帮助一个菜鸟! :)
答案 0 :(得分:1)
您在完成所有选项之前结束了ajax调用
$.ajax({
url: "https://euw.api.pvp.net/api/lol/" + region + "/v1.4/summoner/by-name/" + sumName + "?api_key=MYAPIKEYIDONTSHOWYOU",
type: "GET",
dataType: "json",
data: { },
//You ended it here, it should be further down. });
success: function (json) {
var sumNameNoSpace = sumName.replace(" ", ""),
sumID = json[sumNameNoSpace].id;
console.log(sumID);
},
error: function (XMLHttpRequest, textStatus, errorThrown){//removed '('
alert("error getting Summoner data!");
}
});//Should end here
答案 1 :(得分:-1)
首先,请保留您的success
& ajax调用中的error
回调。这是syntex不匹配..请正确。
第二,
data:{}
应该用json字符串序列化。
$.ajax({
url: "https://euw.api.pvp.net/api/lol/" + region + "/v1.4/summoner/by-name/" + sumName + "?api_key=MYAPIKEYIDONTSHOWYOU",
type: "GET",
dataType: "json",
data: JSON.stringify({}),
success: function (json) {
var sumNameNoSpace = sumName.replace(" ", ""),
sumID = json[sumNameNoSpace].id;
console.log(sumID);
},
error: function (XMLHttpRequest, textStatus, errorThrown) ({
alert("error getting Summoner data!");
}
});
答案 2 :(得分:-1)
您的成功和错误处理程序应该在$ .ajax调用中。另外,我会在你的错误处理程序中执行alert(XMLHttpReqeust.responseText)
因为这会让你更好地了解遇到问题时出了什么问题。
$.ajax({
url: "https://euw.api.pvp.net/api/lol/" + region + "/v1.4/summoner/by-name/" + sumName + "?api_key=MYAPIKEYIDONTSHOWYOU",
type: "GET",
dataType: "json",
data: "{}",
success: function (json) {
var sumNameNoSpace = sumName.replace(" ", "");
sumID = json[sumNameNoSpace].id;
console.log(sumID);
},
error: function (XMLHttpRequest, textStatus, errorThrown) ({
alert(XMLHttpRequest.responseText);
});
答案 3 :(得分:-1)
当然,您有语法错误。你应该调用"成功"和"错误"来自AJAX调用主体的回调(我的意思是,在你输入括号之前")")。此外,来自jQuery API文档:
jqXHR.success(),jqXHR.error()和jqXHR.complete()回调是 自jQuery 1.8起不推荐使用。准备最终的代码 删除,改为使用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
这应该可以正常工作:
$.ajax({
url: "https://euw.api.pvp.net/api/lol/" + region + "/v1.4/summoner/by-name/" + sumName + ",
type: "GET",
data: ({
api_key: "MYAPIKEYIDONTSHOWYOU"
}).done(function(json){
var sumNameNoSpace = sumName.replace(" ", ""),
sumID = json[sumNameNoSpace].id;
console.log(sumID);
}).fail(function(xhr, textStatus, errorThrown){
alert("error getting Summoner data!");
console.log(textStatus + ": " + errorThrown);
}).always(function(){
console.log("The AJAX request has been completed!")
});
});