当我将两个变量传递给我的php时,我得到Notice: Undefined index : name
& Notice: Undefined index : parsed
。
当我为每个变量添加echo
时,我什么都没得到。
我的数据库中没有添加任何内容。
name = "myName";
parsed = someCode.toJSON();
parsed = JSON.stringify(parsed, null, '\t');
parsed = parsed.replace(/[\n\t]+([\d\.e\-\[\]]+)/g, '$1');
$.ajax({
url: 'js/function/scriptSave.php',
type: 'POST',
dataType: 'JSON',
data: {name : name, parsed : parsed},
success: function(result) {
alert("Success");
},
error: function(err){
alert('Error'+err);
}
});
Ajax总是返回错误案例:Error [object Object]
当我用文本替换变量时,一切正常:
data: {name : 'name', parsed : 'parsed'}
当我删除json变量时,它才有效。 我真的不明白这里发生了什么......
[编辑]
包含名称的变量是ok。但是当我只放置包含json的变量时,它不起作用。但这个变量的问题是什么?
到目前为止,我已经尝试过:
var obj = {}; obj.name = 'myName'; obj.parsed = someCode.toJSON();
{data : JSON.stringify(obj)}
///////
{'name' : name, 'parsed' : parsed}
///////
{parsed : JSON.stringify(parsed)}
这是我的php:
<?php
if (!@mysql_connect('localhost', 'user', 'pwd')) {
die("Error");
} else {
mysql_select_db('database');
}
$parsed = $_POST["parsed"];
$name = $_POST["name"];
mysql_query("INSERT INTO object(name, parsed) VALUES ('".$name."', '".$parsed."')");
?>
[编辑2]
当我将dataType从JSON
更改为TEXT
时,ajax是成功的,但没有任何内容插入数据库...
当我在我的devTools中查看chrome时,所有内容都可以:
常规
Request Method :POST
Status Code: 200 OK
响应标题
Content-Type: text/html
请求标题
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
表单数据
name : myName
parsed : {"another" : "value"}
[编辑3]
问题似乎来自于json的大小...当我排除某些字段时,一切似乎都有效。问题是在我的数据库中,包含我的JSON的字段是LongText ... JSON大小不一定是问题..
答案 0 :(得分:0)
obj
方法时, POST
应该作为字符串发送。
因此,将data
合并为一个Object
并将其与JSON.stringify()
方法进行字符串化。
var obj = {};
obj.name = "your name";
obj.parsed = { "another" : "value" };
$.ajax({
url: 'js/function/scriptSave.php',
type: 'POST',
dataType: 'JSON',
data: JSON.stringify(obj),
success: function(result) {
alert("Success");
},
error: function(err){
alert('Error'+err);
}
});
答案 1 :(得分:-1)
只需删除 JSON.stringify()。