#php #laravel #fetch #aurelia #fetch-api
#php #laravel #выборка #aurelia #fetch-api
Вопрос:
Столкнувшись с очень странной проблемой при публикации параметров строки запроса из браузера (chrome) с использованием fetch API, а затем при разборе параметров на стороне сервера с помощью php-laravel, ключ параметра предваряется двойными вопросительными знаками.
Я использую aurelia fetch client, если это имеет значение.
let url = new URL('https://myapp.com/api/companies/');
let param = {'id_owner': 34};
url.search = new URLSearchParams(param);
this.http.fetch(url, {
mode: 'cors',
method: 'get'
})
на стороне сервера, когда я пытаюсь получить доступ id_owner
, ничего не отображается.
Я добавил следующую строку в свой контроллер (laravel) и вывод
public function index(Request $request)
{
return [$_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING'], $_POST, $_GET, $request->query('??id_owner'), $request->all()];
и, что удивительно, вывод содержит двойные вопросительные знаки, добавленные к ключу
[
"/api/companies/?id_owner=34", // [$_SERVER['REQUEST_URI']
"??id_owner=34", // $_SERVER['QUERY_STRING']
[], // $_POST
{"??id_owner":"34"}, // $_GET
"34", // $request->query('??id_owner') , a laravel feature
{"??id_owner":"34"} // $request->all() , again a laravel feature
]
В идеале должно быть просто и прямолинейно использовать $_GET[‘id_owner’] для получения значения, но с добавленными вопросительными знаками это не работает. Откуда они берутся? Есть идеи, что происходит не так?
Комментарии:
1. похоже, проблема с кодировкой URL перед отправкой его на PHP. Можете ли вы попробовать журнал консоли перед отправкой запроса?
2. из чего получен вывод
https://myapp.com/api/companies/
? перед запуском процесса.3. журнал консоли перед отправкой запроса
href: "https://myapp.com/api/companies/?id_owner=34"
4. @Bira когда я обращаюсь к URL
https://myapp.com/api/companies/
, я получаю этот JSON["/api/companies","?",[],{"?":""},null,{"?":null}]
5. Я не знаю, может ли это помочь, но проверьте это: github.com/angular/angular/issues/14531 . Эта проблема заключается в том, что 1-й параметр имеет только предшествующий
?
. В комментарии запрос на извлечение был отклонен, потому что они сказали: Устаревший, посколькуURLSearchParams
(Angular) устарел, в то время какHttpParams
еще не поддерживает синтаксический анализ строки.