我正在尝试从JavaScript中的前端表单中获取三个值,然后将这些值传递给Laravel控制器。
我可以获得两个值(Key和Id)但我无法获得第三个值,因为它是一个URL。如果我评论URL变量,那么我将得到其余的两个值(Key和Id),但如果我将URL传递给其他两个值,那么我在控制器中没有得到任何东西。
我已尝试使用这两个JavaScript方法encodeURIComponent()和encodeURI()来编码给定的https网址,但仍然没有运气。
这是我在JavaScript中的代码:
let get_url = $("#get-url").val();
let get_key = $("#get-key").val();
let get_id = $("#get-area").data('getId');
toastr.remove();
if (get_key) {
var req = new Image();
req.src = api_url + 'senddata/' + get_id + '/' + get_key + '/' + get_url;
console.log(req.src);
toastr.success(MEASURE.UTILITIES.translate("success_request_successfully_sent"));
$("#btn-send-data-request").hide();
$("#block_get_url").hide();
$("#block_get_key").hide();
$("#csv_get_request_message").show();
} else {
toastr.error(MEASURE.UTILITIES.translate("error_enter_valid_data"));
}
答案 0 :(得分:0)
你的get_url包含一个网址,我相信它有https://或http://
当您添加到正在构建的API URL时添加更多/更改ROUTE时,这是一个问题。
例如,您的API网址需要req.src = api_url + 'senddata/' + get_id + '/' + get_key + '/' + get_url;
这就像http://www.laravel.com/api/senddata/123/123/urlhere
,但你正在制作类似http://www.laravel.com/api/senddata/123/123/http://urlhere
的东西,这意味着你正在改变路线。
要解决此问题,您可以在传递URL之前对URL进行编码。
将您的代码更改为:let get_url = encodeURIComponent($("#get-url").val());
参考:https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp