Laravel:我可以用json编码参数以某种方式缩短这个url吗?

时间:2017-04-23 21:17:55

标签: php json ajax laravel

我有一个AJAX请求从数据库中获取一些值,然后使用这些值重定向回页面,以便我可以在页面上使用它们。

问题是这个URL很长:

http://ibpc.dev/admin/products/create?specifications={%22id%22:4,%22title%22:%22Video%20Cards%22,%22created_at%22:null,%22updated_at%22:null,%22specifications%22:[{%22id%22:1,%22name%22:%22Model%22,%22created_at%22:%222017-04-23%2022:54:04%22,%22updated_at%22:%222017-04-23%2022:54:04%22,%22pivot%22:{%22category_id%22:4,%22specification_id%22:1},%22attributes%22:[{%22id%22:1,%22specification_id%22:1,%22name%22:%22Brand%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22}]},{%22id%22:2,%22name%22:%22Interface%22,%22created_at%22:%222017-04-23%2022:54:04%22,%22updated_at%22:%222017-04-23%2022:54:04%22,%22pivot%22:{%22category_id%22:4,%22specification_id%22:2},%22attributes%22:[{%22id%22:2,%22specification_id%22:2,%22name%22:%22Interface%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22}]},{%22id%22:3,%22name%22:%22Chipset%22,%22created_at%22:%222017-04-23%2022:54:04%22,%22updated_at%22:%222017-04-23%2022:54:04%22,%22pivot%22:{%22category_id%22:4,%22specification_id%22:3},%22attributes%22:[{%22id%22:3,%22specification_id%22:3,%22name%22:%22Chipset%20Manufacturer%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22},{%22id%22:4,%22specification_id%22:3,%22name%22:%22GPU%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22},{%22id%22:5,%22specification_id%22:3,%22name%22:%22Core%20Clock%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22}]},{%22id%22:4,%22name%22:%22Memory%22,%22created_at%22:%222017-04-23%2022:54:04%22,%22updated_at%22:%222017-04-23%2022:54:04%22,%22pivot%22:{%22category_id%22:4,%22specification_id%22:4},%22attributes%22:[{%22id%22:6,%22specification_id%22:4,%22name%22:%22Effective%20Memory%20Clock%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22},{%22id%22:7,%22specification_id%22:4,%22name%22:%22Memory%20Size%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22},{%22id%22:8,%22specification_id%22:4,%22name%22:%22Memory%20Interface%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22},{%22id%22:9,%22specification_id%22:4,%22name%22:%22Memory%20Type%22,%22created_at%22:%222017-04-23%2022:54:05%22,%22updated_at%22:%222017-04-23%2022:54:05%22}]},{%22id%22:5,%22name%22:%22Ports%22,%22created_at%22:%222017-04-23%2022:54:04%22,%22updated_at%22:%222017-04-23%2022:54:04%22,%22pivot%22:{%22category_id%22:4,%22specification_id%22:5},%22attributes%22:[]},{%22id%22:6,%22name%22:%22Details%22,%22created_at%22:%222017-04-23%2022:54:04%22,%22updated_at%22:%222017-04-23%2022:54:04%22,%22pivot%22:{%22category_id%22:4,%22specification_id%22:6},%22attributes%22:[]}]}

我可以以某种方式缩短此网址吗?

来自模板的AJAX GET请求:

('#category-select').change(function () {
    $.ajax({
        type: 'GET',
        url: '/admin/catalog/specifications',

        data: {
            selectFieldValue: $(this).val()
        },

        success: function (response) {
            window.location.href = response.redirectUrl + response.data;
        }
    });
});

路线:

Route::get('/admin/products/create', [
    'uses' => 'AdminController@getCreateProduct',
    'as' => 'admin.getCreateProduct'
]);

Route::get('/admin/products/create/{specifications}', [
    'uses' => 'AdminController@getCreateProduct',
    'as' => 'admin.getCreateProduct'
]);

Route::get('/admin/catalog/specifications', [
    'uses' => 'AdminController@getProductSpecifications',
    'as' => 'admin.getProductSpecifications'
]);

AdminController:

public function getCreateProduct(Request $request)
{
    $categories = Category::all();

    if ($request['specifications']) {
        $specifications = json_decode($request['specifications']);
    } else {
        $specifications = null;
    }

    return view('admin.products.create', ['categories' => $categories, 'specifications' => $specifications]);
}

public function getProductSpecifications(Request $request)
{
    $categoryId = $request['selectFieldValue'];

    $specifications = Category::with('specifications.attributes')->find($categoryId);

    return response()->json(array('data' => json_encode($specifications), 'redirectUrl'=> '/admin/products/create?specifications='), 200);
}

0 个答案:

没有答案