错误:密钥是无效的JQuery语法,因为它缺少结束括号

时间:2017-06-13 12:44:31

标签: javascript jquery ajax api

我在尝试从政府私有API测试服务器请求响应时,在Chrome控制台中收到此错误。它说语法错了,但我根本没有看到缺失的括号。 边缘控制台提供了额外的错误文本

BAD REQUEST - The request could not be processed by the server due to invalid syntax.

否则Edge与chrome中的错误相同:

    {"Message":"The request is invalid.",
    "ModelState":{"message":[
  "The key is invalid JQuery syntax because it is missing a closing bracket\r\nParameter name: key"]}},
     "status":400,
     "statusText":"Bad Request"}

我正在写一个测试请求,尝试将xml表单发布到testserver上的预期消息收件箱中。 (政府测试服务器不是我的)

我已经尝试了很多变化,并查看api文档以获取可能的解释。 这是代码:

<script>
  $(document).ready(function() {
    var postData = "";
    var xmltext = "";
    $.get('TiltakUtenAnsvarsrett.xml', function(tiltakutenansvarsrettXML) {
      xmltext = tiltakutenansvarsrettXML;
      //xmltest = xmltext.replace(/"/g, '\\"');
      console.log("Dette er xmltext variablen" + xmltext);

      //console.log("Dette er xmltext variablen stringified" + JSON.stringify(xmltext));
    }, 'text');
    $("#formtext").click(function() {

      this.postData = {
        "Type": "FormTask",
        "ServiceCode": "4373",
        "ServiceEdition": "1",
        "_embedded": {
          "forms": [{
              "Type": "MainForm",
              "DataFormatId": "5508",
              "DataFormatVersion": "41083",
              "FormData": xmltext
            }

          ],
          "attachments": [{
            "Filename": "String example",
            "Attachmenttype": "String example 2",
            "Data": "Base64 encoded"
          }]
        }
      };
      $.ajax({
        url: "https://xxx.xxxx.xx/api/my/messages",
        headers: {
          "Accept": "application/hal+json",
          "ApiKey": "xxxxxxx",
        },
        xhrFields: {
          withCredentials: true
        },
        type: "POST",
        data: JSON.stringify(this.postData),
        success: function(data, status, jqHxr) {
          console.log("====== Returned messages ======");
          console.log(JSON.stringify(data));
        }.bind(this),
        error: function(jqHxr, textStatus, errorThrown) {
          console.log("Kaster feil status");
          console.log("jqHxr er: " + JSON.stringify(jqHxr) + "\n");
          console.log("Status er: " + textStatus + "\n");
          console.log("Erroren er: " + errorThrown + "\n");
          console.log("postData er: " + JSON.stringify(this.postData) + "\n");
          console.log("Responsetext er: " + jqHxr.responseText);
          console.log();
        }.bind(this)
      });
    });
  });
</script>

Google搜索只提供了一些此错误消息,但还不足以继续。

2 个答案:

答案 0 :(得分:1)

如果服务需要JSON,请添加contentType json

type: "POST",
contentType:"application/json",
data: JSON.stringify(this.postData),
success: function(data, status, jqHxr) {

答案 1 :(得分:-4)

你快速关闭括号'}'。 这是固定代码:

{"Message":"The request is invalid.",
    "ModelState":{"message":[
  "The key is invalid JQuery syntax because it is missing a closing bracket\r\nParameter name: key"]},
     "status":400,
     "statusText":"Bad Request"}

您可以在此页面上测试json: http://www.jsoneditoronline.org/