JavaScript和在字符串内部

JavaScript & inside a string

本文关键字:内部 字符串 JavaScript      更新时间:2023-09-26

我有一个输入字段接受学院名称,还有其他一些输入字段用于其他用途。

1)接下来,我用所有这些输入和 创建一个JSON结构

2)对JSON数据执行JSON. stringify (JSONdata)。

3)设置XHR内容类型标头为:

xhr.setRequestHeader("Content-Type", "application/X-www-form-urlencoded");

用这个字符串化的输入调用post请求到服务器。

一切都很好,除了这个特殊的大学输入,它看起来像这样:

St. Joseph's College of Arts & Science, Cityname.

在服务器端解析数据后,我希望我的字符串在服务器端看起来像这样:

"college":"St. Joseph''s College of Arts & Science, Cityname",

它看起来像:

"college":"St. Joseph''s College of Arts ',' Science, Bangalore",

&,取代,因此抛出错误:

: Unexpected end of JSON input<br> &nbsp; &nbsp;at Object.parse (native)<br> &nbsp; &nbsp;at server.js:206:28<br> &nbsp; &nbsp;at Layer.handle [as handle_request] 

我想让它接受所有的输入字段,不管里面有什么

你只需要对你要发送的字符串进行uri编码,就像你通过手动创建的uri编码表单数据发送字符串一样:

var data = "Data="+encodeURIComponent(JSON.stringify(requestObject));
// ----------------^^^^^^^^^^^^^^^^^^^----------------------------^
xhr.setRequestHeader("Content-Type", "application/X-www-form-urlencoded");
xhr.send(data);

&在uri编码中是特殊的(与其他几个字符一样)。encodeURIComponent确保这些在另一端被正确编码以进行传输和解码。一旦解码,您就可以使用您在环境中使用的任何JSON解析器将JSON(字符串)转换为对象结构。

您正在发送JSON,但提供标准<form>的内容类型。在表单中,&用于分隔键值对。

告诉服务器你给它一个东西,然后又给它另一个东西,只会导致痛苦。

传递正确的application/json头,一切都应该很好。