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

时间:2015-08-21 10:34:42

标签: php jquery ajax laravel-5.1

编辑:我想我应该添加Laravel 5.1作品!

Ajax调用由路由处理,如下所示:

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

我希望encodeURIcompponent()函数可以使这个工作,但是当我在下面调用时,Laravel 5.1返回404。如果uri不包含已编码的http://,则可以使用。

这是ajax调用中的url看起来像404返回的内容:

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

我有一个ajax调用需要检查我作为参数传递的URL

用户将在表单字段中输入一个url,我在一个名为website的变量中捕获

我的ajax电话需要接受:

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

我这样做是为了构建url然后传递给jQuery $.getJSON调用:

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

但我从服务器回来了404。如果我删除协议(http://),它就可以正常工作。

如何在ajax调用中将完整的url作为参数传递?谢谢!

3 个答案:

答案 0 :(得分:0)

您的网址出错。你需要:

function wpse_199180_canonical_pages( $wp ) {
    if ( ! is_admin() && is_page() && isset( $wp->query_vars['paged'] ) ) {
        wp_redirect( get_permalink( get_queried_object() ), 301 );
        exit;
    }
}

add_action( 'wp', 'wpse_199180_canonical_pages' );

而不是:

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

您有var url = '/ajax/act=url&&u=' + encodeURIComponent(website); 而不是&&,但是您告诉我们您的ajax呼叫接受:

&

答案 1 :(得分:0)

var url = encodeURI(website);

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

尝试更改发布

答案 2 :(得分:0)

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

这应该有用!