下拉列表更改中的JQuery在codeigniter中不起作用

时间:2016-07-28 06:06:11

标签: javascript jquery ajax codeigniter model-view-controller

我是代码点火器的新手,我在StackOverflow线程的数量上搜索了以下问题,但它们似乎都没有解决我的问题。

我有以下视图代码:

<select name="select1" id="select1">
    <option value="0">None</option>
    <option value="1">First</option>
</select>
<scriptsrc="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">

// Ajax post
$(document).ready(function() {
    $("#select1").change(function(event) {
        event.preventDefault();
        var id = $(this).val();
        jQuery.ajax({
            type: "POST",
            url: "<?php echo base_url(); ?>" + "index.php/mycontroller/method",
            dataType: 'json',
            data: {id: id},
            success: function(res) {

            }
        });
    });
});
</script>

好的,当我更改下拉列表选择时,没有任何反应,实际应该调用我的控制器方法。你能帮我解决这个问题吗?

由于

4 个答案:

答案 0 :(得分:5)

您使用的<select> ID为category

但是在jquery中,你这样称$("#select1").change(function(event)

您只需将$("#select1").change(function(event)更改为

即可

$("#category").change(function(event)

答案 1 :(得分:1)

你的jquery选择器有错误。

您正在使用$("#category").change(function(event) { //ur code here });

您的部分中没有以此名称提及的任何ID。

 @Override
public void onClick(View v) {
    int[] attrs = new int[]{R.attr.selectableItemBackground};
    TypedArray typedArray = getActivity().obtainStyledAttributes(attrs);
    int backgroundResource = typedArray.getResourceId(0, 0);
    v.setBackgroundResource(backgroundResource);

    switch (v.getId()) {
        case ACTION_PLAY_ID:
            Log.d(MainActivity.TAG, getString(R.string.detail_action_play));
            v.setBackgroundResource(backgroundResource);
            Intent intent = new Intent(getActivity(), PlayerActivity.class);
            intent.putExtra(Video.VIDEO_TAG, videoModel);
            startActivity(intent);

            break;
        case ACTION_BOOKMARK_ID:
            if (bookmarked) {
                v.setBackgroundResource(backgroundResource);
                deleteFromBookmarks();
                ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.star_outline));
            } else {
                v.setBackgroundResource(backgroundResource);
                addToBookmarks();
                ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.star));
            }
            break;
        case ACTION_REMINDER_ID:
            if (!isReminderSet) {
                createReminderDialog((ImageView) v);
            } else {
                cancelReminder(liveTvProgram.getProgramId());
                ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.alarm));
            }
            break;
    }
}

答案 2 :(得分:1)

如果您的脚本包含任何错误,请检入控制台。

如果脚本没有错误,请检查更改后调用的函数,方法是添加alert或console语句。

如果函数被调用,请检查base_url。根据最新评论&#39; /&#39;丢失。

您还可以尝试以下代码段:

//Add J Query Library here

<select name="select1" id="select1" onchange="funName(this);">
    <option value="0">None</option>
    <option value="1">First</option>
</select>

<script type="text/javascript">
 function funName(element)
 {
     var id = element.value;
     jQuery.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>" + "/index.php/mycontroller/method",
        dataType: 'json',
        data: {"id" : id},
        success: function(res) {
                console.log(res);
        }
    });
 }
</script>

答案 3 :(得分:0)

您在jquery代码中使用了id选择器,但该id在html dropdown标记中被称为name属性。请尝试以下代码。

更改以下内容: -

<select name="select1" id="category">
    <option value="0">None</option>
    <option value="1">First</option>
</select>
<scriptsrc="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
// Ajax post
$(document).ready(function() {
    $("#category").change(function(event) {
        event.preventDefault();
        var id = $(this).val();
        jQuery.ajax({
            type: "POST",
            url: "<?php echo base_url(); ?>" + "index.php/mycontroller/method",
            dataType: 'json',
            data: {id: id},
            success: function(res) {

            }
        });
    });
});