PUT / POST双引号而不转移到外部服务器

时间:2017-07-02 21:19:29

标签: javascript double-quotes

解释

我正在尝试POST / PUT以下文字

  

{"电子邮件":" DD@GMAIL.COM"}

通过 xhttp.send 到外部服务器。我需要用它来发布双引号,但我该怎么做?我读到了关于htmlentities,specialchars et cetera但我仍然在一小时或更长时间后找不到解决方案。当然,这不起作用(因为双引号冲突):

xhttp.send("{"email":"DD@GMAIL.COM"}");

这是迄今为止的脚本:

 <!DOCTYPE html>
<html>
<body>

<h1>The XMLHttpRequest Object</h1>

<button type="button" onclick="loadDoc()">Request data</button>

<p id="demo"></p>

<script>
function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = this.responseText;
    }
  };
  xhttp.open("PUT", "http://www.example.com/json", true);
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.setRequestHeader('X-CSRF-Token', "csrf_token");
  xhttp.send("fname=Henry"); //TODO: MAKE SURE THAT EXACTLY     {"email":"DD@GMAIL.COM"}       WILL BE 'POSTED'.
}
</script>

</body>
</html>

请帮助我,我无法弄清楚这一点。

3 个答案:

答案 0 :(得分:1)

您可以将字符串换成单引号

xhttp.send('{"email":"DD@GMAIL.COM"}');

但是,最好将其序列化为来自对象的字符串

xhttp.send(JSON.stringify({ email :"DD@GMAIL.COM"}));

此外,您应该发送正确的内容类型标题

xhttp.setRequestHeader("Content-Type", "application/json"); 

答案 1 :(得分:0)

它是JavaScript,而不是HTML(嗯,它嵌入在HTML中,但在脚本元素中,因此就HTML而言,您只需担心序列</。)

JavaScript中的转义字符为\

xhttp.send("{\"email\":\"DD@GMAIL.COM\"}");

由于您不在数据中使用单引号,您可以使用它们来分隔字符串而不是转义内容:

xhttp.send('{"email":"DD@GMAIL.COM"}');

或者您可以使用JavaScript对象并将其转换为JSON:

var object = {email:"DD@GMAIL.COM"};
var json = JSON.stringify(object);
xhttp.send(json);

...除了

xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

JSON的内容类型为application/json

答案 2 :(得分:0)

您可以使用单引号将其换行:'{"email":"DD@GMAIL.COM"}'