通过AJAX发送JSON,返回任何内容

时间:2012-06-03 03:51:10

标签: php jquery json codeigniter

两部分问题。

如何在AJAX调用的控制器中获取发布数据?

我发送的JSON没有身份证明。例如:

$.ajax({
    type: 'POST',
    url: action,
    data: JSON.stringify(data),
    success: function(data){
        alert(data);
    },
    dataType: 'json'
});

data只是[{"name":"variable_name", "value":"12"}]

我正在尝试:

public function save()
{
    header('Content-Type: application/json');
    $json = $this->input->post('data');        
    echo $json;
}

如何返回JSON以外的内容?

例如,我使用以下控制器对此进行测试:

public function save()
{
    echo "test";
}

调用成功函数时我得到的是null

任何指针?

2 个答案:

答案 0 :(得分:2)

您将不必设置dataType。当数据类型设置为'json'时,jquery会自动将已获取的数据转换为js对象。由于你只返回一个字符串(这是无效的json),json解析器不知道该怎么做,只返回null。通过删除数据类型,您可以获取原始字符串,然后根据字符串的内容使用条件来决定是否将其解析为json。

答案 1 :(得分:2)

你在php中获取原始POST数据的方式(至少是一种方式)file_get_contents('php://input')

这会将JSON作为原始字符串返回,您可以在其上调用json_decode