我觉得自己找不到答案是愚蠢的。
我想通过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语法中的错误,但我找不到任何可以帮助我的内容。
提前致谢。
答案 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字符串,并且比手工构建它更清晰。