【问题标题】:How jqgrid edit operation send to the server the variables?jqgrid编辑操作如何将变量发送到服务器?
【发布时间】:2011-11-06 16:15:27
【问题描述】:

我认为 jqgrid 在编辑行时将列名作为变量发送,但在我创建的网格中这似乎不起作用,除非我在 php.ini 中的某个地方犯了错误。 jqgrid用什么方法把这些数据发送到服务器?

这是我的代码。

索引.html

<script type="text/javascript">

$(function(){ 

  var mygrid = $("#list");

  mygrid.jqGrid({
    url:'example1.php',
    editurl: 'edit.php',
    datatype: 'xml',
    mtype: 'GET',
    colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
    colModel :[ 
      {name:'invid', 
        index:'invid', 
        width:55
      }, 
      {name:'invdate', 
        index:'invdate', 
        width:90,
        editable:true
      }, 
      {name:'amount', 
        index:'amount', 
        width:80, 
        align:'right', 
        search:true , 
        stype:'select', 
        searchoptions:{value:':All;8:8.00;6:6.00'},
        editable:true
      }, 
      {name:'tax', 
        index:'tax', 
        width:80, 
        align:'right',
        editable:true
      }, 
      {name:'total', 
        index:'total', 
        //width:80, 
        align:'right', 
        sortable:true,
        editable:true,
        editrules:{required:true},
        edittype:'select',
        editoptions:{value:"5:55.00;2:25.00"}
      }, 
      {name:'note', 
        index:'note', 
        width:150, 
        search:true , 
        align:'center', 
        editable:true, 
        editrules:{required:true, edithidden:true}, 
        hidden:true,
        edittype:'textarea',
        editoptions: {rows:"12",cols:"10"}
      }
    ],
    pager: '#pager',
    emptyrecords: "Nothing to display",
    recordtext: '{0} - {1} of {2}',
    rowNum:9,
    rowList:[7,9,11],
    viewrecords: true,
    caption: 'My first grid',
    sortname: 'invid',
    sortorder: 'desc',
    loadonce : true

  });
  //Search button
  $("#bsdata").click(function(){ mygrid.jqGrid('searchGrid', {sopt:['eq'],top:300,caption:"test searching"} ); });
  // Search toolbar.
  mygrid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: false, defaultSearch : "eq"});
  //NavBar
  mygrid.jqGrid('navGrid','#pager',{edit:false,add:false,del:false,search:true});

  // Edit Row

  $("#bedata").click(function(){ 
        var gr = mygrid.jqGrid('getGridParam','selrow'); 
        if( gr != null ) 
        mygrid.jqGrid('editGridRow',gr,{height:480,reloadAfterSubmit:false}); 
        else alert("Please Select Row");        
  });

  // Add row

  $("#badata").click(function(){ 
        mygrid.jqGrid('editGridRow',"new",{height:480,reloadAfterSubmit:false}); 
  });

  // Delete row

  $("#bddata").click(function(){ 
        var gr = mygrid.jqGrid('getGridParam','selrow');
        if( gr != null ) 
            mygrid.jqGrid('delGridRow',gr,{reloadAfterSubmit:false}); 
        else 
            alert("Please Select Row to delete!"); 
  });

}); 


</script>

和编辑.php

<?php

// connect to the database
$dbhost = "localhost";
$dbuser = "user";
$dbpassword = "user123";
$database = "test";
$tablename = "invheader";
$db = mysql_connect($dbhost, $dbuser, $dbpassword)
or die("Connection Error: " . mysql_error());

mysql_select_db($database) or die("Error conecting to db.");
//mysql_set_charset('utf8',$database);
mysql_query("SET NAMES 'utf8'");


 if($_GET['oper']=='add')
 {

 }
 if($_GET['oper']=='edit')
 {
    $id     =   mysql_real_escape_string($_GET['id']);
    $date   =   mysql_real_escape_string($_GET['invdate']);
    $amount =   mysql_real_escape_string($_GET['amount']);
    $tax    =   mysql_real_escape_string($_GET['tax']);
    $total  =   mysql_real_escape_string($_GET['total']);
    $note   =   mysql_real_escape_string($_GET['note']);

    $sql = "UPDATE ".$tablename." SET invdate = '".$date."', client_id = '5' , amount = '".$amount."', tax = '".$tax."', total = '".$total."' , ";
    $sql.= "note = '".$note."'";
    $sql.= " WHERE invid = ".$id;

    echo $sql;
$result=mysql_query($sql) or die(mysql_error());

mysql_close($db);


 }
 if($_GET['oper']=='del')
 {

 }



?>

感谢您的宝贵时间。

【问题讨论】:

    标签: php jqgrid edit


    【解决方案1】:

    嗯,最后我使用了 Tamper data firefox 的插件,并意识到来自 jqgrid 的数据是通过 POST 方法发送的,而不是我在 mtype: label 中设置的 GET。

    所以我将 edit.php 文件中的所有 $_GET 更改为 $_POST 并工作。

    【讨论】:

    • @FN,这个问题和你对它的回答帮助我最终理解了 jqgrid 如何将 POST 编辑为 php。所以...谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2022-01-23
    • 2012-05-16
    相关资源
    最近更新 更多