【问题标题】:json_decode with special characters带有特殊字符的 json_decode
【发布时间】:2013-12-05 09:28:11
【问题描述】:

我将值从 java 脚本传递到 php 文件以进行插入,如果我发送的名称没有特殊字符,则插入没有问题。

姓名:sathish
位置:班加罗尔

但是我发送我的名字时带有任何特殊字符,然后 json_decode() 不接受它。

姓名:sathish&kumar
位置:班加罗尔

我尝试使用 utf8_encode() 和 var_dump() 函数。

在第一种情况下 var_dump 显示
字符串(43) "{"name":"sathish","location":"bangalore"}"

在第二种情况下 var_dump 显示
字符串(18) "{"name":"sathish"

在这种情况下,它以 18 个字符结尾,如果我遗漏了其中的任何内容。请帮我解决这个问题。

JavaScript

function createTC()
{
    var p=document.forms['TCForm'];
    var JSONObject =new Object;

    JSONObject.name=p['txtName'].value;
    JSONObject.location=p['txtLocation'].value;
    JSONstring = JSON.stringify(JSONObject);

    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        var request = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        var request = new XMLHttpRequest();
    }

    var random1 = Math.random();
    var urlstr="../TraineeCreation/createTC.php?rand="+random1+"&json="+JSONstring;    
    request.open("GET", urlstr , true);

    request.onreadystatechange = function()
    {
        if (request.readyState == 4)
            alert(request.responseText);
    }

    request.send(null);
}

谢谢

【问题讨论】:

  • & 是 URL 中的一个特殊值,并形成通过 POST 发送的编码数据。它标志着前一个参数值的结束。看来您在发送 JSON 之前没有正确编码它。请发布您用来发送数据的 JavaScript 代码。
  • edit您的问题并添加您的代码。它在 cmets 中是不可读的。正确格式化您的代码:stackoverflow.com/editing-help.

标签: javascript php


【解决方案1】:

当您将 JSON 放入查询字符串中时,与号会拆分值。您应该使用 encodeURIComponent 正确编码组件。

看看this thread

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2018-11-14
    • 2012-09-15
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多