【问题标题】:Taking Post data for jquery function from a view in codeigniter using loops使用循环从 codeigniter 中的视图获取 jquery 函数的 Post 数据
【发布时间】:2011-08-14 08:58:47
【问题描述】:

我在codeigniter中有以下视图-说edit_res_view-

<html>
<table>
    <? foreach ($list as $key => $value): ?>
        <tr><td><?= $key ?> :</td><td><input type="text" name='<?= $key ?>' size="25" value='<?php echo $value; ?>'/></td></tr>
    <? endforeach; ?>

    <tr><td colspan="2"><center><input type="submit" id="submit" size="40" value="SAVE" />

</table>

现在我在另一个视图中有另一个 jquery 函数,它从这个表单的 name 属性中获取值作为 POST 数据发送到另一个函数 -

$("#submit").live("click",function(){

    $.ajax({
        url: "http://localhost/codeigniter_local/index.php/manage_resources/doupdate_des",
        type:"POST",                                         
        data:"d_id="+$("[name='d_id']").val()+
              "&cpu_brand="+$("[name='cpu_brand']").val()+
              "&processor="+$("[name='processor']").val()+
              "&ram="+$("[name='ram']").val()+
              "&hdd="+$("[name='hdd']").val()+
              "&mac_id_wired="+$("[name='mac_id_wired']").val()+
              "&mac_id_wireless="+$("[name='mac_id_wireless']").val()+
              "&os="+$("[name='os']").val()+
              "&os_license_no="+$("[name='os_license_no']").val()+
              "&monitor_sno="+$("[name='monitor_sno']").val()+
              "&keyboard_sno="+$("[name='keyboard_sno']").val()+
              "&mouse_sno="+$("[name='mouse_sno']").val()+
              "&sno="+$("[name='sno']").val()+
              "&date_of_purchase="+$("[name='date_of_purchase']").val()+
              "&warranty="+$("[name='warranty']").val()+
              "&comments="+$("[name='comments']").val(),

        success:function(html){

            oTable.fnReloadAjax('http://localhost/codeigniter_local/index.php/manage_resources/json/1');
            alert("Done !");
            $("#form1").dialog("close");
        },  
        ERROR: function(html){                                             
            alert(html);                                        
        }  
    });
} );//for submit

现在的问题是我想循环遍历 jquery 函数的“data:”属性的值,而不是像上面所做的那样对其进行硬编码。

该怎么做呢? (顺便说一句,$list 数组通过我的控制器作为参数传递给 edit_res_view)。

【问题讨论】:

    标签: php codeigniter jquery-plugins jquery


    【解决方案1】:

    这样的事情应该使用jQuery map function

    var postData = $("#form1 input:text").map ( function (J, node) {
        var jThis   = $(node);
        return jThis.attr ('name')  + '=' +  jThis.val ();
    } ).get ().join ('&');
    
    
    $.ajax({
        url:  "http://localhost/codeigniter_local/index.php/manage_resources/doupdate_des",
        type: "POST",                                         
        data: encodeURI (postData)
        ... ...
    


    该代码假定表单的 id 为“form1”,并有助于确保仅使用正确的表单输入。

    【讨论】:

    • hmmm..我有点困惑... $postdata 如何从 'edit_res_view' 获取输入字段的值? edit_res_view 和带有 $("#submit").live() 代码的视图是两个不同的视图。
    • 你说你"want to loop through the values for the 'data:' attribute of the jquery function instead of hardcoding"。你想在 PHP 中做这个循环吗?!!? ...并且仍然将那个笨拙的怪物发送到用户的浏览器?!!?使用我向您展示的 JS 效果要好得多(除了使用不在问题中的细节调整输入选择器)。您将拥有更简单的 PHP 和简单的 JS,并且会出现更少的可怕错误。
    • 哎呀...对不起,我在想别的东西...你的代码正是我需要的...但是你能告诉我如何在我的页面上选择特定表单的输入..for例如,现在我有 2 个带有 ids 的表单-“form1”和“form2”..我如何为该特定表单的输入字段应用 postData 代码?...对不起,noobish 查询...我对 jquery 比较陌生...还有什么是上述查询中的“J”变量...
    • 我尝试了以下语法... var postData = $("form#form1 input[type=text]").map ( function (J, node) { var jThis = $(node) ; return jThis.attr('name') + '=' + jThis.val(); } ).get().join('&');但萤火虫的调试器显示没有发送 POST 数据...有什么问题??
    • 更新了答案。不清楚,你有2个同种形式吗?但是只有一个提交按钮被激活。 ... ... J 只是一个索引变量。需要指定它以获取 node 值(尽管在这种情况下我可以只使用 this)。我在答案中添加了 DOC 的链接。 ... ... 几乎没有任何 POST 数据。在代码中添加console.log(postData);; Firebug 的控制台显示什么?
    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多