无法修改/操作动态PHP表单的Ajax / JSON响应中的动态内容

时间:2013-12-03 15:59:47

标签: php jquery html ajax json

我需要一个动态表单,应该像这样工作:

  1. 当用户按“添加”按钮时,显示新的..< .div> DOM选择一个包。
  2. 根据包的不同,行必须更改颜色(通过添加/删除某些类)。
  3. 但我无法让它发挥作用。这是我的HTML:

    <button onclick='addDay();'>
    <div class='content'>
    </div>
    

    我的Javascript:

    //FUNCTION 1: LOAD AJAX CONTENT
    function addDay()
    {
        baseUrl = $('input#helper-base-url').val();
    
        //Set caching to false
        $.ajaxSetup ({
            cache: true
        });
    
        //Set loading image and input, show loading bar
        var ajaxLoad = "<div class='loading'><img src='"+baseUrl+"assets/images/loading.gif' alt='Loading...'  /></div>";
        var jsonUrl = baseUrl+"car/add_day/"+count;
        $("div#loading").html(ajaxLoad);
        $("div#content").hide();
        $.getJSON(
            jsonUrl,
            {},
            function(json)
            {
                    temp = "";
    
                if(json.success==true)
                {
                    temp = json.content;
                }
    
                //Display the result
                $("div#content").show();
                $("div#content").html($("div#content").html()+temp);
                $("div#loading").hide();
              });
    }
    
    //FUNCTION 2: MODIFY AJAX CONTENT
    $("#content").on("change", "select.switch", function (e) {
    
    e.preventDefault();
    
    //Get which row is to be changed in background's color
    id = this.id;
    id = id.substr(6);
    
    //Add class "package1" which change row's background color
    row = "row"+id;
    row.addClass('package1');
    

    });

    我的PHP

    function add_day($count)
    {
        $temp = "<div class='row".$count."'>
            <select id='switch".$count."' class='switch'>
            <option value='1'>Package 1</option>
            <option value='2'>Package 2</option>
            </select>
        </div>";
    
        $result = array(
            'success' => true,
            'content' => $temp,
            );
    
        $json = json_encode($result);
        echo $json;
    }
    

    PS。表单并不像这样简单,但为了使问题解决更容易,我删除了细节。但我似乎无法动态改变课程。我们在这里有解决方案或好工作吗?

    编辑1: 对不起,我之前没有说清楚。获取id或变量没有问题(没关系,当我提醒它正确的值出来时 - 但是在我添加类之后,没有看到颜色变化)。我跑了:

    一个。单击按钮,加载Ajax内容。

    ℃。失败:在更改时,将类“package1”添加到div行。 (所以,我没有问题获得正确的id或类名。当我提醒变量它给出正确的结果,但颜色不会改变。我无法检查是否成功添加了类。)< / p>

3 个答案:

答案 0 :(得分:2)

$("#content").on("change", "select.switch", function (e) {
    e.preventDefault();

    $('.row' + $(this).attr('id').replace('switch', '')).addClass('package1');
});

答案 1 :(得分:1)

假设其他一切都没问题

//Get which row is to be changed in background's color
id = this.id;
id = id.substr(6);

//Add class "package1" which change row's background color
row = "row"+id;
row.addClass('package1');

这就是问题所在。要获得attibute id,你必须做

var id = $(this).attr('id').substr(6);

您必须使用$(this)而不是this来使用所有jQuery功能。

下面

$(row).addClass('package1');

所以,完整代码:

//Get which row is to be changed in background's color
var id = $(this).attr('id').substr(6);

//Add class "package1" which change row's background color
$('.row'+id).addClass('package1');

答案 2 :(得分:0)

将类更改为id解决了问题(使用#row0而不是.row0)。对不起,谢谢你的时间:))