【问题标题】:How to limit a JS Object to be posted via ajax如何限制通过 ajax 发布的 JS 对象
【发布时间】:2018-12-01 22:36:19
【问题描述】:

我有一个应用程序通过JSON 通过ajax 发送消息。这是 JS 对象:

var message = {
  "message_by": colmn[0].innerHTML,
  "message_date": new Date(),
  "message_recipients": [
    {
      "phone_number": colmn[1].innerHTML,
      "recipient_name": colmn[2].innerHTML
    }
   ],
  "message_text": colmn[3].innerHTML,
  "subscriber_name": "John Doe"
};

然后像这样发布:

var url = "http://url/api/sendMessage";
   $.ajax({
           type: "POST",
           url: url,
           data: JSON.stringify(message),
           contentType: "application/json; charset=utf-8",
           dataType: "json",
           processData: true,
           success: function (data, status, jqXHR) {
               console.log(data);
               console.log(status);
               console.log(jqXHR);
               //alert("success..." + data);
               alert("Success. Message sent.");
           },
           error: function (xhr) {
               //alert(xhr.responseText);
               alert("Error. Try again.");
           }
   });

stringified 消息可能如下所示:

var message = {
            "message_by": "Brian",
            "message_date": new Date(),
            "message_recipients": [{
                        "phone_number": "0700111222",
                        "recipient_name": "Timothy"
                 }, {
                     "phone_number": "0800222111",
                        "recipient_name": "Winnie"
                }],
            "message_text": "Hello! You are invited for a cocktail at our auditorium. ",
            "subscriber_name": "John Doe"
        }

现在解决问题。这些消息可以很好地发布到 api,但最近注意到一些消息失败并发现失败的消息有 100 个或更多消息收件人。到99都可以正常使用。我问了一个同事,他说没有对api设置任何限制。

有没有办法可以将对象大小限制为 99 并将剩余部分推送到新对象但仍将其作为同一个 ajax 帖子的一部分?有没有其他创造性的方法来解决这个问题?

【问题讨论】:

  • 创建一个名为 iter 的变量,执行 for(var prop in message) 并设置一个最大增量,一旦超过就发送消息,创建新对象,并重置 iter 变量跨度>

标签: javascript json ajax javascript-objects


【解决方案1】:

没有这样的限制。

如果您想将消息收件人限制为 99,您可以执行以下操作

validateMessege(message){
  var length = message.length;
  var messegeRep = message.message_recipients.slice()
  for(var i = 0; i < length; i+=99){
    message.message_recipients = messageRep.slice(i, i+99)
    // Your post request here
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多