所以基本上我有我的主干应用程序对我的苗条 php 应用程序进行 ajax GET 调用。它期望 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 的方式是,我必须让我的 javascript 脚本在 index.php 上运行,否则我的页面将无法正确加载,因为当它们被请求时,脚本不在那里代表路由应该去的地方。
任何帮助表示赞赏!
谢谢!