Onchange函数使用laravel5不起作用
Onchange function not working using laravel5
当我从同一个表中选择第二个类别时,我的onChange()
函数无法使用Laravel 5。我可以得到第一个类别id。问题是onchange()
函数。我需要更改什么?
控制器
public function ajax_select_sub_second_cat(){
$id = $_GET['id'];
$main_cat = Category_model::get_sub_category_ajax($id);
//return view('siteadmin.add_cat',['main_cat' => $category]);
if($main_cat){
$return = "";
$return = "<option value='0'> -- Select -- </option>";
foreach($main_cat as $main_cat_ajax) {
$return .= "<option value='".$main_cat_ajax->sub_category1."'> ".$main_cat_ajax->sub_category1." </option>";
}
echo $return;
} else {
echo $return = "<option value='0'> --Select-- </option>";
}
}
查看
<select id="subcategory" name="product_sub_category" onChange="getCat1(this.value);">
<option value="">-----Select Standard-----</option>
</select>
<script>
function getCat1(id){
var passData = 'id='+id;
$.ajax( {
type: 'get',
data: passData,
url: '<?php echo url('ajax_select_sub_second_cat'); ?>',
success: function(responseText){
if(responseText){
$('#subcategory2').html(responseText);
}
}
});
}
</script>
我假设您需要在选项select的更改事件中执行一些操作。。
你可以这样做
$('select').on('change', function (e) {
var optionSelected = $("option:selected", this);
alert(optionSelected);
});
您可以在这里触发任何ajax调用或任何您想做的事情,而optionSelected
就是所选择的项。
希望这对你有帮助。
1-首先,您必须确保事件在更改时启动并命中url。
2-检查您的控制台。您应该使用alert方法来保证函数正常运行。
alert(id);
如果每次更改都没有显示警报,请检查您的下拉代码
<option value="id">Name</option>
所有下拉值都必须采用此格式。
3-毕竟更换
url: '<?php echo url('ajax_select_sub_second_cat'); ?>',
至
url: 'ajax_select_sub_second_cat',
确保在路由文件中定义ajax_select_sub_second_cat,否则它将不起作用。
希望你不会遇到任何问题。当您发出ajax请求时,应该使用控制台,这将有很大帮助并节省您的时间。
问题的可能原因:
您的url
属性的值中存在语法错误AJAX请求:
url: '<?php echo url('ajax_select_sub_second_cat'); ?>',
因为未连接的单引号会导致语法错误。
正确的方法是:
url: "<?php echo url('ajax_select_sub_second_cat'); ?>",
您的代码写得并不糟糕,而且可能足够公平,可以解决手头的问题。尽管如此,如果您不将JavaScript/jQuery代码与PHP混淆,它可能会变得更干净、更好。
请看下面我的建议:
PHP
首先,由于您在控制器中有ajax_select_sub_second_cat
,并且如果您还没有为其设置路由,则可以在routes.php
中这样做:
Route::post('getSubCategories', 'theController@ajax_select_sub_second_cat');
如果在方法中注入/键入hint Laravel的Illuminate'Http'Request
类,则可以通过GET
或POST
中的任何方法访问发布的数据:
public function ajax_select_sub_second_cat(Request $request) // inject the HTTP request in the method
{
//get the id of the selected field via post request
$id = $request->input('id');
//assuming that your Category_model returns the models
$sub_cats = Category_model::get_sub_category_ajax($id);
// ...
接下来,您可以将数据作为JSON编码的数据集/数组进行回显,而不是将数据回显为html
:
// ...
echo json_encode($sub_cats->toArray());
}
jQuery
您可以使用jQuery本身处理由DOM元素触发的change
事件,尽管使用onchange
作为元素的属性不是问题。要让jQuery处理此问题,请使用change()
方法:
$(function(){
$('#subcategory').change(function(){
var selectedVal = $('#subcategory option:selected').text(); //this is how you get the selected value with jQuery
$.ajax({
type: "POST",
url: "{{ url('getSubCategories') }}",
data: {
id: selectedVal
},
dataType: 'json', // force the ajax request to return json data
success: function(returnedData){
// ...
}
});
});
});
现在假设您已经回显了一组子类别,在AJAX请求的success
处理程序中迭代返回的子类别集,并相应地填充第二个select。
查看jQuery的$.each()
,了解集合的迭代
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- Textarea必需的attribut在javascript中不起作用
- Laravel5 AJAX set cookie 不起作用
- Onchange函数使用laravel5不起作用