未捕获的ReferenceError:$ this未定义为ajax

时间:2017-09-12 04:45:10

标签: javascript php mysql ajax codeigniter

我是javascript和ajax的新手。我想像这样制作动态选择选项列表。

enter image description here

但是当我尝试使用谷歌浏览器开发人员进行编译时,会出现这样的错误(按F12)。

enter image description here

这是我的剧本:

<div class="container">

        <div class="row">
            <div class="col-md-offset-3 col-lg-6">
                <h1 class="text-center">Ajax & Codeigniter Select Box Dependent</h1>
                <div class="form-group">
                    <label for="country">Country</label>
                    <select class="form-control" name="country" id="country">
                        <option value="">Select Country</option>
                        <?php foreach ($countries as $country) : ?> 
                            <option value="<?php echo $country->country_id; ?>"><?php echo $country->country_name; ?></option>
                        <?php endforeach; ?>
                    </select>
                  </div>
                  <div class="form-group">
                    <label for="pwd">Province:</label>
                    <select class="form-control" name="province" id="province" disabled="">
                        <option value="">Select Province</option>
                    </select>
                  </div>
            </div>
        </div>
        <!-- /.row -->

    </div>
    <!-- /.container -->

    <!-- jQuery Version 1.11.1 -->
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src="<?php echo base_url() ?>assets/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $('#country').on('change',function(){
                var country_id = $($this).val();
                if(country_id == '')
                {
                    $('#province').prop('disabled',true);
                }
                else
                {
                    $('#province').prop('disabled',false);
                }
            });
        });
    </script>
</body>

</html>

如果您知道我的代码有什么问题,请帮助我。 感谢

3 个答案:

答案 0 :(得分:3)

有一个拼写错误,很可能是:

$('#country').on('change',function(){
    var country_id = $($this).val();
    //                 ^ Remove this $ sign
    ...
})

$($this)替换为$(this),因为您没有定义$thisthis(没有$)是上下文。

此外,作为改进,您可以通过执行以下操作删除if和重复代码:

$('#country').on('change',function(){
  var country_id = $(this).val();
  $('#province').prop('disabled', country_id == '');
});

此外,您可以直接执行:

$('#country').on('change',function(){
  $('#province').prop('disabled', this.value == '');
});

答案 1 :(得分:1)

更改此行

 var country_id = $($this).val();

 var country_id = $(this).val();

答案 2 :(得分:1)

试试这个

import javax.ejb.Stateless;
import javax.jws.HandlerChain;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

import services.LoginOps;

import utilies.LoginParameters;



@WebService
@HandlerChain (file = "handlers.xml")
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,use=SOAPBinding.Use.LITERAL,parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)

public class LService {
    @WebMethod
    public LoginParameters callStr(String str
    }
...