jQuery“$ .ajax”代码不起作用,语法错误?

时间:2015-01-29 16:20:57

标签: javascript jquery ajax json

我发帖是因为我花了很多时间来理解为什么我的代码不起作用......

我尝试用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 +"&region="+ region);

})

有关更多信息,我尝试从图例联盟API系统中获取json数据,我用hmtl用户可以给出summoners名称(id playername)+这个区域(id playerregion)。我想在json中获取数据id,但我的代码会使我认为的所有文件都出错。

我尝试了很多不同的语法但没有结果。我现在已经开始使用javacript / jQuery 4天了,我觉得完全迷失了。

请帮助一个菜鸟! :)

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!")
    });
});