Javascript 为什么在通过AJAX发送数据时,必须将对象JSON.stringify()化?

Javascript 为什么在通过AJAX发送数据时,必须将对象JSON.stringify()化?,javascript,json,ajax,Javascript,Json,Ajax,JSON代表javascript对象表示法(我相信您一定知道),那么,在通过ajax发送JSON时,为什么需要将其转换为字符串来发送呢?它只是一个格式化的东西,还是什么 这可能属于另一个地方,如果是这样,请告诉我,我会关闭并移动它 显然,我不是在征求意见,我想知道实际的答案 为了确保清楚,我了解JSON.stringify()的功能,以及它的对应项JSON.parse()。我只是想知道为什么需要使用stringify 谢谢 AJAX是关于HTTP请求的,基本上是对服务器的“文本”请求。这就是您必

JSON代表javascript对象表示法(我相信您一定知道),那么,在通过ajax发送JSON时,为什么需要将其转换为字符串来发送呢?它只是一个格式化的东西,还是什么

这可能属于另一个地方,如果是这样,请告诉我,我会关闭并移动它

显然,我不是在征求意见,我想知道实际的答案

为了确保清楚,我了解JSON.stringify()的功能,以及它的对应项JSON.parse()。我只是想知道为什么需要使用stringify


谢谢

AJAX是关于HTTP请求的,基本上是对服务器的“文本”请求。这就是您必须对对象进行字符串化的主要原因:通过这种方式,对象将变成可以通过HTTP“传输”的文本

通过ajax发送json时,是否需要将其转换为字符串来发送

如果它不是字符串,那么它首先就不是JSON

JSON是一种基于文本的数据格式。HTTP是一种基于文本的通信协议

JSON代表javascript对象表示法

JSON基于JavaScript文本的语法。JavaScript对象不是JSON。

向web服务器发送数据时,数据必须是字符串。

这就是为什么我们使用JSON.stringify()函数将数据转换为字符串,并通过XHR请求将其发送到服务器。

        // Creating a XHR object 
        let xhr = new XMLHttpRequest();
        let url = "submit.php"; 

        // open a connection 
        xhr.open("POST", url, true); 

        // Set the request header i.e. which type of content you are sending 
        xhr.setRequestHeader("Content-Type", "application/json"); 

        // Converting JSON data to string 
        var data = JSON.stringify({ "name": name.value, "email": email.value }); 

        // Sending data with the request 
        xhr.send(data);  

原因是:HTTP只知道纯文本!Ajax本身对于特殊的数据类型是不可知的,它可以用来发送和接收任意数据类型,这些数据类型在HTTP正文中作为纯文本数据传输。因此,如果需要JSON,来自HTTP级别的文本必须在某个地方从/转换为JSON数据格式。在HTTP请求中发送原始JavaScript对象到底意味着什么?JSON是数据的字符串表示,类似于XML。Stringify将JavaScript对象(和数组)转换为这种字符串格式。因此,虽然JSON看起来像JavaScript中的对象文字,但它是自己的数据类型,必须是字符串。那很有趣。感谢你的回答。一旦它允许我,我会把它标记为正确的。你的确切意思是什么?我感谢你的回答,但这是一个非常古老的问题,你的回答实际上并没有回答这个问题,它只是在回答中重复了这个问题。它对问题或其他答案没有任何价值。看起来你是新手,所以我要说:除非你的答案给一个问题带来了新的或有价值的东西,否则不要发布它。特别是如果问题已经有好几年了,并且有一个(仍然有效的)被接受的答案,你是对的。我是新来的,我认为例子会像对我一样帮助其他人。谢谢你的建议。我同意例子是有帮助的,但是例子应该有助于回答这个问题。所使用的示例显示了如何发送Ajax请求,但问题并不是问如何发送请求,而是问为什么。如果这个问题在第一次被问到的时候就公布了,那么很可能会收到反对票。