7

したがって、基本的には、バックボーン アプリケーションで ajax GET をスリムな php アプリに呼び出します。返される JSON dataType が必要です。

$.ajax({
        url: './myroute',
        type: 'GET',
        dataType: "json",
        data: { username: username, password: password },
        success: function(data) {},
        error: function(data) {}
});

私のスリムファイルには次のものがあります。

$app->get('/myroute', function() use ($app) {

    // all the good stuff here (getting the data from the db and all that)

    $dataArray = array('id' => $id, 'somethingElse' => $somethingElse);

    $response = $app->response();
    $response['Content-Type'] = 'application/json';
    $response->body(json_encode($dataArray));

});

    // Tried with these in the above GET request as well:
    // $app->contentType('application/json');
    // echo json_encode($dataArray);

リクエストは適切に処理され (200)、適切に JSON データを取得しますが、完全な index.php ページ データも返すため、エラーが発生します (これは、javascript dataType: "json" では許可されず、これにより、エラー)

コンテンツ タイプを「application/json」に設定するとこれが解決されると考えましたが、それでもページ コンテンツ全体と json データが返されます。

参考までに編集

Slim が私の html を次のようにレンダリングするように設定していました。

$app->get('/', function () use ($app) {
    // would just have my main page files in home.php instead of index.php
    $app-render('home.php');
});

そのため、index.php から返される html ページ データはありませんでした。しかし、pushState の方法では、index.php で JavaScript スクリプトを実行する必要があります。そうしないと、ページが要求されたときに、ルートの行き先を委任するためのスクリプトがそこにないため、ページが正しく読み込まれません。

どんな助けでも大歓迎です!

ありがとうございます!

4

4 に答える 4

10

スリムなフレームワークに慣れていません。面白そうです。json が表示された後もコードが実行され続けるように聞こえます。exit;jsonで応答した後、phpアプリを試してみませんか?

$app->get('/myroute', function() use ($app) {
    // all the good stuff here (getting the data from the db and all that)

    $dataArray = array('id' => $id, 'somethingElse' => $somethingElse);

    $response = $app->response();
    $response['Content-Type'] = 'application/json';
    $response->body(json_encode($dataArray));
    exit();
});
$app->run();

お役に立てれば

于 2013-01-04T03:35:14.713 に答える