6

ZEND、JQuery、PHP、および Javascript に問題があります。私はこれらの言語に非常に慣れていないため、それらを回避しようとしています。

他のケースでは jquery.post が機能しましたが、今は簡単な呼び出しを行うことができません。

phtml ファイル (/admin/user.phtml)

function testJquery()
{
var url = "<?php echo $myHome2Url.'/admin/newusercallback/sessionid/'.$_SESSION['mySessionId'].'/lang/'.$_SESSION['language']?>";
console.log(url);
$.post(url,{},
function(data)
{
    window.alert("Call successful!");
    window.alert(data);
},"json");

}

PHP ファイル: (AdminController.php)

public function newusercallbackAction()
{
     echo json_encode("Test");
}

/admin/newusercallback.phtml ファイルが存在します。

  <?php ?>

実行すると、コンソールに次のメッセージが出力されます。

POST https://dev.myurl.ca/admin/newusercallback/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG
https://dev.myurl.ca/admin/newusercallback/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG
GET https://dev.myurl.ca/admin/user/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENG/report_id/0/

Call Successful! という 2 つのポップアップ ボックスが表示されます。とヌル

問題は、2 番目のポップアップ ボックスに Null ではなく「Test」と表示されることです。

URL https://dev.myurl.ca/admin/newusercallback/sessionid/0c1a5e41-ad0a-470d-9901-305464b48908/lang/ENGを直接参照すると、ブラウザーに次のテキストを含むウィンドウが表示されます。

"Test"

(引用符を含む)

私の質問は、ページを直接参照するとデータ「Test」が正しく表示されているのに、testJquery Null のコールバック データがなぜあるのですか? さらに、どうすれば修正できますか。

4

3 に答える 3

2

これは、jQuery関数が「json」形式を要求し、テキスト「Test」がjsonではないためです。

解決策:1。testJquery()関数の「json」dataTypeを削除します。

    function testJquery(){
        $.post(url,{},function(data){
            window.alert("Call successful!");
            window.alert(data);
        });
    }

2. AdminController.phpファイルを編集して、配列オブジェクトをエンコードします

    public function newusercallbackAction(){
        echo json_encode(array("Test"));
    }
于 2012-11-06T00:12:12.360 に答える
1

コントローラーが HTML/TEXT のみに応答しているようです。方法はわかりませんが、コントローラーは JSON を返す必要があります

于 2012-11-06T00:10:18.873 に答える
1

応答ヘッダー「Content-Type」が有効な json mime である場合にのみ機能しapplication/jsonます。そして、それは省略形にも起こります.getJSON

他のものを出力する前に、これをphpに入れます

header("コンテンツ タイプ: アプリケーション/json; charset=utf-8");

于 2012-11-07T16:35:27.580 に答える