在Ajax调用中传递完整的URL作为参数 - Laravel 5.1路由

EDIT: I guess I should have added the Laravel 5.1 piece!

The Ajax call is being handled by a route as follows:

Route::get('ajax/{action}', ['uses' => 'AjaxController@helpers', 'as' => 'ajax.helpers']);

I would expect the encodeURIcompponent() function to make this work, but Laravel 5.1 returns 404 when I call below. If the uri does not contain the encoded http:// it works.

This is what the url in ajax call looks like that returns 404:

http://my.app/ajax/act=url&u=http%3A%2F%2Fgoogle.com

I have an ajax call that needs to check a url I am passing as a parameter

The user will input a url in a form field, which I capture in a variable called website

My ajax call needs to accept:

'/ajax/act=url&u=' + website;

I am doing this to build the url I then pass to a jQuery $.getJSON call:

var url = '/ajax/act=url&&u=' + encodeURIComponent(website);

But I get 404 back from the server. If I remove the protocol (http://) it works just fine.

How do I pass the full url as a parameter in the ajax call? Thanks!

var url = '/ajax/?act=url&u=' + encodeURIComponent(website);

this should work!

You have an error in your URL. You need to have:

var url = '/ajax/act=url&u=' + encodeURIComponent(website);

Instead of:

var url = '/ajax/act=url&&u=' + encodeURIComponent(website);

You had && instead of &, however you told us that your ajax call accepts:

'/ajax/action=url&u=' + website;
var url = encodeURI(website);

$.ajax({
             url: "your url here",
                        type: "POST",
                        dataType: "HTML",
                        async: false,
                        data: {"u": url},
                        success: function(data) {
                            //                          
                        }
                    });

try changing get to post