0

現在 ajax の使い方を学ぼうとしていますが、残念ながらsuccess.

$('.engineering-services').live('click', function() {     
$.ajax({
    url: 'index.php?route=information/information/homepage_info',
    type: 'post',
    data: {info_description : 'test'},
    dataType: 'json',
    success:    function(json){
    alert('pass');
    },
    error: function(json) {
    alert('fail');
    }
    });

});

これがphp関数です...

    public function homepage_info() {
    $json = array();
    if (isset($this->request->post['info_description'])) {  
    echo $this->request->post['info_description'];
    echo '<br /> test2';
    }
    $this->response->setOutput(json_encode($json));
    }

ただし、これは常に合格アラートではなく不合格アラートになります。ここで明らかな何かが欠けていますか?

編集:コンソールで正しい応答をしているように、機能を見つけてOKです。

すなわち

テスト

テスト2

ありがとうございました

4

2 に答える 2

1

dataType が json に設定されている場合、JSON 以外のものが返されると、ajax 呼び出しでエラー発生します。json をスクリプトに送り返してみてください... {"test":"abc"} など。echoたとえば、コードでへの呼び出しがいくつか見られます。

これだけでなく、ブラウザーに出力される PHP エラー/警告/通知によって呼び出しが中断されます。

ヒント: を使用して、PHP 変数から有効な JSON を生成できますjson_encode()

于 2013-04-15T13:58:42.973 に答える
0

既存のクエリ文字列をデータと組み合わせることはできません。このようなものが機能するはずです(または少なくとも構文的に有効です):

$.ajax({
    url: 'index.php',
    type: 'post',
    data: {information:'information/information/homepage_info',info_description:'test'},
    dataType: 'json',
    success:function(json){
        alert('pass');
    },
    error:function(json) {
        alert('fail');
    }
});

また、前述のように、json ではないものはエラーを引き起こす可能性があるため、echoそれらの html コンポーネントではありませんprint

また、補足として、dataType は、jQuery スクリプトではなくサーバー側でheader('Content-type: application/json');宣言して行う必要があります。index.phpそのようにjsonとして認識されることが保証されており、Javascriptコードも少なくなります。

于 2013-04-15T14:01:34.437 に答える