Объект JSON со значением NULL изменяется на значение банка при отправке через HTTP-запрос на сервер - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть следующий объект:

  var payload = {
    someProperty: null
  };

Я отправляю объект в конечную точку API, используя HTTP.

  $.ajax({
    type: "POST",
    url: nodeHost + ":" + agentWebPort + "/assignDisposition/",
    data: payload,
    beforeSend: function(request) {
      request.setRequestHeader("session", cookieSessionID);
      request.setRequestHeader("user", cookieUsername);
    },
    success: function(response) {;
    } //end success
  });

На сервере (Node.js) я просматриваю данные из HTTP-запроса следующим образом:

console.log(payload);

И, к моему удивлению, это вывод:

{someProperty: ''}

Несмотря на то, что значение моего свойства возникло как NULL, это пустая строка, когда он попадает на сервер.

Это нормальное поведение?

1 Ответ

0 голосов
/ 16 ноября 2018

Я пытаюсь прочитать тело запроса по asp.net

ajaxText.apsx

    string req_txt;

    using (StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream))
    {
        req_txt = reader.ReadToEnd();
    }

    Response.Write(req_txt); var xmlhttp = new XMLHttpRequest();

javascript

   var payload = {
        someProperty: null
    };


    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == XMLHttpRequest.DONE) {   // XMLHttpRequest.DONE == 4
           if (xmlhttp.status == 200) {
               console.log("XMLHttpRequest : " + xmlhttp.responseText);
           }
           else if (xmlhttp.status == 400) {
              alert('There was an error 400');
           }
           else {
               alert('something else other than 200 was returned');
           }
        }
    };

    xmlhttp.open("POST", "/Test/ajaxTest.aspx", true);
    xmlhttp.setRequestHeader("Content-Type", "application/json");
    xmlhttp.send(JSON.stringify(payload));

Результат XMLHttpRequest был {"someProperty": null}

enter image description here

 $.ajax({
        type: "POST",
        url: "/Test/ajaxTest.aspx",
        data: payload,
        success: function (response) {;
            console.log("$.ajax : " + response);
        } 
    });

jquery ajax результат былsomeProperty: ''

enter image description here

вы можете увидеть разницу в результатах.

jquery будет сериализовать объект json дляв процессе и измените с нуля на "" в процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...