我如何在这里正确格式化或访问JSON?

时间:2016-03-05 00:07:11

标签: javascript php jquery json ajax

我觉得自己找不到答案是愚蠢的。

我想通过jquery,AJAX和JSON将数据发送到php文件,从而将客户添加到数据库中。

它有效但是,当我尝试访问对象中的变量时,我得到一个空响应。我不明白为什么。

这是我的PHP代码:

$connection稍后通过了我的数据库连接,但由于调试我暂时无法访问它

function addCustomer($connection){
    $data =  json_decode($_POST['data'], true);
    $surname = $data['surname'];
    $name = $data['name'];
    $street = $data['street'];
    $streetNumber = $data['streetNumber'];
    echo $_POST['data'];
    echo $data;
    echo $name;
}  

前两个回声会回复我的预期,但第三个只回输{

这是JS代码:

function addCustomer(){
    var $surname = $('#addCuSurname').val();
    var $name = $('#addCuName').val();
    var $street = $('#addCuStreet').val();
    var $streetNumber = $('#addCuStreetNumber').val();

    if($surname != '' && $name != '' && $street != '' && $streetNumber != ''){

        var customer = '{"surname": "'+ $surname +'", "name": "'+ $name+'", "street": "'+ 
                        $street+'", "streetNumber": '+ $streetNumber +'}';

        $.ajax({
            url: 'scripts/backend/customers.php',
            type: 'post',
            data: {'action': 'addCu', 'data': JSON.stringify(customer)},
            dataType: "text",
            success: function(response, status) {

            },
            error: function(xhr, desc, err) {
                console.log(xhr);
                console.log("Details: " + desc + "\nError:" + err);
            }, 
        });
    }
}

我认为这可能是我的JSON语法中的错误,但我找不到任何可以帮助我的内容。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你正在尝试对已经是字符串的东西进行字符串化。尝试像这样定义客户:

var customer = {
  surname: $surname,
  name: $name,
  street: $street,
  streetNumber: $streetNumber
}

答案 1 :(得分:0)

问题是您正在将raytrace( ((1 - x0) / w, (1.5 - y0) / w) , ((4 - x0) / w, (1.5 - y0) / w) ) 应用于分配给客户的字符串(是的,它是表示JSON的字符串):

JSON.stringify()

当你var customer = '{"surname": "'+ $surname +'", "name": "'+ $name+'", "street": "'+ $street+'", "streetNumber": '+ $streetNumber +'}'; 时,你得到的是一个表示代表JSON的字符串的字符串。例如,我在Firebug中运行这些行:

stringify

正如您所看到的,在第一个示例中,我得到了表示JSON的字符串。第二个示例(字符串表示JSON的字符串)返回表示JSON字符串的sting。我希望不要过于混淆这些想法。让我们来解决。

您有两种选择。首先,您可以构建JSON而不是JSON字符串:

> JSON.stringify({a: 1, b: 2});
"{"a":1,"b":2}"
> JSON.stringify("{a: 1, b: 2}");
""{a: 1, b: 2}""  // A string representing a string representing a JSON.

然后将其字符串化。

另一个选项是保留JSON字符串,就像您正在构建JSON字符串一样,但不将var customer = { surname: $surname, name: $name, street: $street, streetNumber: $streetNumber }; 应用于它。

JSON.stringify()

我会选择第一个解决方案,因为这样可以确保获得格式正确的JSON字符串,并且比手工构建它更清晰。