当我将这两个变量传递给我的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是成功的,但是DB中没有插入任何东西.
当我在我的devTools中看到我的chrome everything时,我想要没事:
General
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大小不一定是问题所在..
发布于 2015-11-27 09:12:09
在调用Ajax 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);
}
});发布于 2015-11-27 14:48:45
只需删除JSON.stringify().
https://stackoverflow.com/questions/33942927
复制相似问题