0

2つの部分からなる質問。

AJAXが呼び出すコントローラーで投稿データを取得するにはどうすればよいですか?

送信しているJSONにはIDがありません。例えば:

$.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

ポインタはありますか?

4

2 に答える 2

2

を設定する必要はありませんdataType。データ型が'json'jqueryに設定されている場合、受信したデータは自動的にjsオブジェクトに変換されます。文字列(有効なjsonではありません)のみを返すため、jsonパーサーは何をすべきかわからず、nullを返すだけです。データ型を削除することで、生の文字列を取得し、文字列の内容に基づいて条件を使用して、jsonとして解析するかどうかを決定できます。

于 2012-06-03T04:00:59.710 に答える
2

PHPで生のPOSTデータを取得する方法(少なくとも1つの方法は)file_get_contents('php://input')

これにより、JSONが生の文字列として返されます。これを呼び出すことができますjson_decode

于 2012-06-03T04:04:19.217 に答える