Итак, в основном у меня есть основное приложение, выполняющее вызов 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.
Изменить для справки
Раньше я настраивал его так, чтобы Слим отображал мой html следующим образом:
$app->get('/', function () use ($app) {
// would just have my main page files in home.php instead of index.php
$app-render('home.php');
});
Таким образом, данные html-страницы не возвращались из index.php. Но в pushState мне нужно, чтобы мои javascript-скрипты работали на index.php, иначе мои страницы не будут загружаться должным образом, поскольку, когда они запрашиваются, скрипты не могут делегировать, куда должен идти маршрут.
Любая помощь приветствуется!
Спасибо ТАК!