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

jQuery "$.ajax" code dont work, syntax error?

本文关键字:不起作用 语法 错误 代码 ajax jQuery      更新时间:2023-09-26

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

我尝试使用 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 数据,用户可以给召唤师名称(id 玩家名称)+ 此区域(id 玩家区域)。 我想在 JSON 中获取数据 ID,但我的代码使我认为的所有文件都出错。

我尝试了很多不同的语法,但没有结果。 我已经启动javacript/jQuery已经4天了,我感到完全迷茫。

请帮助菜鸟!:)

您将在所有选项完成之前结束 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

首先,将successerror回调保留在 ajax 调用中。这是语法不匹配。.请指正。第二 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!");
     }
 });

当然,您有语法错误。您应该从 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!")
    });
});

您的成功和错误处理程序应该在 $.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);
    });