Ajax / PHP:传递变量

时间:2015-11-26 16:09:05

标签: php jquery ajax

当我将两个变量传递给我的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大小不一定是问题..

2 个答案:

答案 0 :(得分:0)

在调用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);
    }
});

答案 1 :(得分:-1)

只需删除 JSON.stringify()