我有一个简单的表单,下拉列表可以选择一种产品类型'一些。选择某个项目后,它会触发onChange
个事件。给定的产品类型可以是expiration date
。我想根据它改变字段的可见性。
我已经制定了一条路线/product_type/get_exp/{id}
,但我很难制定jQuery请求,以获取该值并相应地隐藏字段
答案 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请求。