首页 > 解决方案 > JQuery Ajax 格式问题

问题描述

我的 ajax 查询是这样工作的:

$.ajax({
        type: "POST",
        url: "https://bljo2x1b0h.execute-api.eu-west-2.amazonaws.com/IncrementOne/competitions?competitionName=" + competitionNameVar 
    + "&competitionDescription=" + competitionDescriptionVar + "&competitionLocation=" + competitionLocationVar + "&competitionNumberOfProblems=" + competitionNumberOfProblemsVar 
    + "&competitionNumberOfZones=" + competitionNumberOfZonesVar + "&competitionDate=" + competitionDateVar + "&competitionUsername=" + localStorage.myUserName;,
        crossDomain: true,
        dataType: "text",

但不是当我尝试将数据放入数据中时:像这样的参数(或没有String()):

data: {
            "competitionName": String(competitionNameVar),
            "competitionDescription": String(competitionDescriptionVar),
            "competitionLocation": String(competitionLocationVar),
            "competitionNumberOfProblems": String(competitionNumberOfProblemsVar),
            "competitionNumberOfZones": String(competitionNumberOfZonesVar),
            "competitionDate": String(competitionDateVar),
            "competitionUsername": String(localStorage.myUserName),
        },

我看不出是什么问题。疯狂的是,我以类似的方式设置了一个 get 请求,效果很好:

$.ajax({
        type: "GET",
        url: "https://bljo2x1b0h.execute-api.eu-west-2.amazonaws.com/IncrementOne/competitions",
        crossDomain: true,
        data: {
            "competitionsNameParameter": String(CompetitionName),
        },

标签: ajaxamazon-web-servicesrestaws-lambda

解决方案


查询参数和请求正文之间存在差异。根据POSTAPI 是否接受查询参数或请求正文,您需要以这种方式调用。但是,POSTAPI 应该将有效负载作为请求正文。在这种情况下,data需要属性而不是请求参数。

请咨询 API 提供者并首先澄清这一点。因此,编写客户端代码来使用 API。

此外,当您说它不起作用时,您能否分享浏览器网络选项卡中的结果(请求 URL、正文、响应标头、消息等)?


推荐阅读