[英]JS Fetch api and Symfony2 FOSRestBundle
目前,我正在嘗試使用Javascript Fetch API從我的Symfony2 FOSRest控制器獲得響應。 在我的控制器中,我使用以下代碼提供響應:
return View::create()
->setStatusCode(200)
->setData(array('success'=>true));
在我的JS中,我得到了這個:
fetch(url, 'get').then(
function (response) {
if (response.status !== 200) {
console.log('Problem, status: ' + response.status);
return;
}
response.json().then(function (data) {
console.log('OK');
if (typeof callback == 'function')
return callback(data);
});
}
).catch(function (err) {
Console.log(err);
});
結果,我的控制器給了我一個純json,如果我直接在瀏覽器中輸入網址,我可以看到(在Chrome開發工具中的“響應”部分),但是當執行js代碼時,我看到以下錯誤:
未捕獲(承諾)SyntaxError:意外令牌<
這與我從!doctype html開始的初始文件有關。 在調試器中,如果我記錄response.body,則看到它是ReadableByteStream,但不是我的json。 我認為問題出在Symfony中,因為如果我從常規.php文件而不是從RESTFul控制器發送它,我可以讀取json。 任何幫助,將不勝感激。
UPD:當我將response.json()更改為response.text()時,我終於得到了數據))有什么原因嗎? 另外,在我的網址中,我還具有查詢字符串參數(例如?par1 = 1&par2 = 2),我想將該參數傳遞給我的REST控制器,當我再次使用以下方法在瀏覽器中再次輸入網址時得到該參數:
$data = $request->query->get('data');
但是,當我通過JS fetch(在url參數中)傳遞它時,沒有數據傳輸到控制器。 知道在這種情況下該怎么辦嗎? 謝謝
UPD2我的symfony config.yml
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
formats:
json: true
xml: false
html: false
rss: false
templating_formats:
json: false
xml: false
html: false
rss: false
view_response_listener: 'force'
sensio_framework_extra:視圖:{注釋:false}路由器:{注釋:true}
嘗試將其添加到您的配置中:
fos_rest:
# ...
view:
# ...
formats:
json: true
如果不起作用,請添加以下內容:
fos_rest:
# ...
format_listener:
rules:
- { path: '^/yourApiPrefix', priorities: ['json'], fallback_format: json, prefer_extension: false }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.