したがって、基本的には、バックボーン アプリケーションで 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 スクリプトを実行する必要があります。そうしないと、ページが要求されたときに、ルートの行き先を委任するためのスクリプトがそこにないため、ページが正しく読み込まれません。
どんな助けでも大歓迎です!
ありがとうございます!