php - javascript将对象字符串转换为字符串

标签 php javascript jquery jsobject

我无法将 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() 函数相反)

谢谢指教

最佳答案

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

map 示例:

{
   "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);
});

关于php - javascript将对象字符串转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048403/

相关文章:

javascript - 使用php变量检查javascript中的变量

php - 如何使用 PhpSpreadsheet 从表格单元格中检索日期?

php - 如何跨不同页面构建可重用且可维护的评论

javascript - Jquery Tokeninput 和动态嵌套表单

php - 如何获取 gearman 中特定类型的排队作业数?

javascript - 如何让一段 javascript 只工作给定的次数?

javascript - 如何使用 Google Maps API V3 制作显示边界的简单邮政编码 map ?

javascript - 如何在 javascript node.js 中使用 console.log 打印函数内的变量列表

javascript - 在滚动条上更改图像 Logo

jquery slider 问题