Javascript TypeError:无法将对象转换为基元值

Javascript TypeError:无法将对象转换为基元值,javascript,jquery,node.js,Javascript,Jquery,Node.js,我有一个文本编辑器(div),里面有一个格式化(所选)文本的程序。当我标记文本的一部分并选择使其看起来像此(代码片段)时,我必须使用,以避免一些错误并使其易于使用。但是,这些数据正在被发送到服务器(nodeJS),它会导致一个错误,内容会分割成一个对象,为了避免这个问题,我想在发送到服务器之前用空格替换。 我所做的是如下 // replace   by " " let content = $('.editor').html().replace(/( )/gi

我有一个文本编辑器(div),里面有一个格式化(所选)文本的程序。当我标记文本的一部分并选择使其看起来像
(代码片段)时,我必须使用
,以避免一些错误并使其易于使用。但是,这些数据正在被发送到服务器(nodeJS),它会导致一个错误,内容会分割成一个对象,为了避免这个问题,我想在发送到服务器之前用空格替换


我所做的是如下

// replace   by " "
let content = $('.editor').html().replace(/( )/gi, " ");

// replace editor html
$('.editor').html(content);

// print results
console.log("html: ",$('.editor').html());
在控制台中,它显示预期内容(文本:
作为
dasdasd
):

但是,在服务器端,我遇到了以下错误:

TypeError: Cannot convert object to primitive value
然后,我决定打印包含编辑器内容的变量(看起来不错吧?)


问题:我如何用空格替换
,而不必将html转换为(字符串)以避免此错误?

我知道您解决了问题,但您可能对阅读此文章感兴趣,因为您的问题源于对web开发基本概念的误解,即数据编码

据我所知,您不能将字符串
传递到后端,因为它被解析为一个对象,所以我假设您使用GET或POST的编码来发送请求。简单来说:

// this object
{
  a: 10,
  b: 20
}

// get passed to the server as this string
a=10&b=20
这很好。这是一种方法。但您必须处理发送特殊字符的正确编码,例如:

// you have this object:
{
  a: 10,
  b: 'hello&world'
}

// you encode it naively to this
a=10&b=hello world

// the server understands this
{
  a: 10,
  b: 'hello',
  nbsp: ';world'
}
&
创建了这个bug,因为它是一个特殊字符,不会作为字符串的一部分被处理即使你找到了一个不使用
,或者用空格代替它的技巧,你也会认为你已经解决了问题,但是。。。几乎所有unicode字符都是特殊字符,需要进行编码以避免产生错误。

使用不同的编码(例如JSON)对字符串进行编码,或发布数据。我个人会使用这样的函数,它为您完成所有工作,并为您解决所有与编码相关的问题:

let数据={
用户ID:1,
身份证号码:1
}
取('https://jsonplaceholder.typicode.com/posts',{
方法:“POST”,
数据:JSON.stringify(数据)
})
.then(resp=>resp.json())

.then(json=>console.log(json))我知道您解决了这个问题,但您可能对阅读本文感兴趣,因为您的问题源于web开发的一个被误解的基本概念,即数据编码

据我所知,您不能将字符串
传递到后端,因为它被解析为一个对象,所以我假设您使用GET或POST的编码来发送请求。简单来说:

// this object
{
  a: 10,
  b: 20
}

// get passed to the server as this string
a=10&b=20
这很好。这是一种方法。但您必须处理发送特殊字符的正确编码,例如:

// you have this object:
{
  a: 10,
  b: 'hello&world'
}

// you encode it naively to this
a=10&b=hello world

// the server understands this
{
  a: 10,
  b: 'hello',
  nbsp: ';world'
}
&
创建了这个bug,因为它是一个特殊字符,不会作为字符串的一部分被处理即使你找到了一个不使用
,或者用空格代替它的技巧,你也会认为你已经解决了问题,但是。。。几乎所有unicode字符都是特殊字符,需要进行编码以避免产生错误。

使用不同的编码(例如JSON)对字符串进行编码,或发布数据。我个人会使用这样的函数,它为您完成所有工作,并为您解决所有与编码相关的问题:

let数据={
用户ID:1,
身份证号码:1
}
取('https://jsonplaceholder.typicode.com/posts',{
方法:“POST”,
数据:JSON.stringify(数据)
})
.then(resp=>resp.json())

.then(json=>console.log(json))
与其猜测如何解决问题,为什么不包括生成TypeError的代码,指出它发生在哪一行?NodeJS不显示错误发生的位置我只知道它是哪个文件。您知道在node中启用某种调试模式的方法吗?但是您可以调试代码。找出它在哪里产生错误。有很多方法可以做到这一点。不要害羞,请随时告诉我这些方法。这不是害羞的问题。你应该主动寻找自己。在互联网上进行简单的搜索就会得出这样的结论:与其猜测如何解决问题,为什么不包括产生TypeError的代码,指明它发生在哪一行?NodeJS不显示错误发生的位置我只知道它是哪一个文件。您知道在node中启用某种调试模式的方法吗?但是您可以调试代码。找出它在哪里产生错误。有很多方法可以做到这一点。不要害羞,请随时告诉我这些方法。这不是害羞的问题。你应该主动寻找自己。在互联网上进行简单的搜索就会得出这样的结论:谢谢你,大师。多格勋爵很感激这个回答:这很有帮助。谢谢你,大师。多格勋爵很欣赏这个答案:这非常有帮助。