使用jQuery从GET请求中获取一个简单的布尔值

时间:2015-06-17 14:42:05

标签: jquery ajax laravel

我有一个简单的表单,下拉列表可以选择一种产品类型'一些。选择某个项目后,它会触发onChange个事件。给定的产品类型可以是expiration date。我想根据它改变字段的可见性。

我已经制定了一条路线/product_type/get_exp/{id},但我很难制定jQuery请求,以获取该值并相应地隐藏字段

1 个答案:

答案 0 :(得分:1)

您需要确保从该路由发送JSON响应。否则你会更难自己制作它。

由于没有太多代码可以使用,我会尝试以通用的方式解释它......

创建路线(您已经完成了该路线)。 get路线就可以了。

$route->get('product_type/get_exp/{id}', 'Controller@getFooMethod');

在相应的Controller方法中,执行以下操作。请注意,我键入了ProductType模型。但这只有在模型绑定在路由器中时才有效。

public function getFooMethod(ProductType $id)
{
    // Check if ID has expiration date field
    // Let's store it in $hasExpiration
    // e.g. $hasExpiration = false

    return Response::json(array('showExpiration'=> (int) $hasExpiration));
}

然后在onChange方法中:

$('#SELECT_ID').on('change', function() {
    // Fetch the ID of the selected option.
    var optionID = $(this).attr('data-id'); // please change per your layout definition

    // Construct the url.
    var productTypeExpirationUrl = 'url_to_route_with_trailing_slash/' + optionID;

    // Perform an Ajax GET request using the product type ID.
    $.ajax({
        url: productTypeExpirationUrl,
        type: 'GET',
        dataType: 'json',
        success: function(result) {
            // Extract the showExpiration property of result and hide/show the extra field accordingly.
        }
    });
});

请不要忘记发送CSRF令牌(描述为here),否则请求会无声地失败。

作为一项额外的安全措施,我会跳入一些中间件,只允许在该路由上发出Ajax请求。