JavaScript将对象转换为字符串

3

我无法将JS对象转换为确切的字符串,我的代码:

jsonObj['payment_value']=100.10;
jsonObj['payment_date']="2012-06-15";
jsonObjStr = JSON.stringify(jsonObj);
alert(jsonObjStr);
$.post("test", jsonObjStr.toString(), function(output){
    alert(output);
});

第一个警报显示:

{"payment_date":"2012-06-15","payment_value":100.1}

在函数测试中(我使用CodeIgniter框架),它应该打印“payment_date”和“payment_value”,代码如下:

echo $this->input->post("payment_value");
echo $this->input->post("payment_date");

在“清晰”PHP中等效于以下内容:

echo $_POST["payment_value"];
echo $_POST["payment_date"];

但第二个警告显示了明确的字符串。

如果我放置

{"payment_date":"2012-06-15","payment_value":100.1}

而不是 jsonObjStr.toString(),它可以正常工作。

有人知道如何修复这个问题,而不使用 json_decode 吗? 我需要以此格式发布值,而不是其他数组。

因此,我需要将 jsonObjStr 精确转换为字符串(类似于 eval() 函数的反函数)。

谢谢您的帮助。


1
我不确定我理解你想做什么。你的预期输出是什么? - user234932
1个回答

4
根据$.post文档,第二个参数应该是一个映射或查询字符串:

映射示例:

{
   "payment_date":"2012-06-15",
   "payment_value":100.1
}

查询字符串示例:

'payment_date=2012-06-15&payment_value=100.1​​​'

当您使用 JSON.stringify 时,您会得到以下结果:
'{"payment_date":"2012-06-15","payment_value":100.1}'

这是一个无效的 查询字符串。所以解决方案是:作为第二个参数,不要将任何东西转换为字符串,直接传递对象本身

jsonObj['payment_value']=100.10;
jsonObj['payment_date']="2012-06-15";
$.post("test", jsonObj, function(output){
   alert(output);
});

我简直不敢相信它如此简单... 显然它运行良好!谢谢! - Markoj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接