首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax / PHP : pass变量

Ajax / PHP : pass变量
EN

Stack Overflow用户
提问于 2015-11-26 16:09:04
回答 2查看 194关注 0票数 1

当我将这两个变量传递给我的php时,我得到了Notice: Undefined index : name & Notice: Undefined index : parsed

当我为每个变量添加一个echo时,我什么也得不到。

我的数据库中没有添加任何内容。

代码语言:javascript
复制
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]

当我用文本替换变量时,一切都正常:

代码语言:javascript
复制
data: {name : 'name', parsed : 'parsed'}

当我只删除json变量时,它就工作了。我真的不明白这里发生了什么..。

编辑

包含名称的变量是ok的。但是,当我只放入包含json的变量时,它就不起作用了。但是这个变量有什么问题呢?

到目前为止,我已经尝试过:

代码语言:javascript
复制
    var obj = {}; obj.name = 'myName'; obj.parsed = someCode.toJSON();
    {data : JSON.stringify(obj)}
///////
    {'name' : name, 'parsed' : parsed}
///////
    {parsed : JSON.stringify(parsed)}

下面是我的php:

代码语言:javascript
复制
<?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

代码语言:javascript
复制
Request Method :POST
Status Code: 200 OK

响应头

代码语言:javascript
复制
Content-Type: text/html

请求头

代码语言:javascript
复制
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

表单数据

代码语言:javascript
复制
name : myName
parsed : {"another" : "value"}

编辑3

问题似乎来自于json的大小..。当我把一些领域排除在外时,一切似乎都正常。问题是,在我的数据库中,包含我的JSON的字段是一个LongText.JSON大小不一定是问题所在..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-27 09:12:09

在调用Ajax obj方法时,应该将POST作为字符串发送。

因此,将data组合成一个Object,并使用JSON.stringify()方法对其进行字符串化。

代码语言:javascript
复制
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);
    }
});
票数 0
EN

Stack Overflow用户

发布于 2015-11-27 14:48:45

只需删除JSON.stringify().

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33942927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档