Как операция редактирования jqgrid отправляет на сервер свои переменные? - PullRequest
3 голосов
/ 06 ноября 2011

Я думал, что jqgrid отправляет в качестве переменных при редактировании строки имена столбцов, но в созданной мной сетке это, похоже, не работает, если только я не допустил ошибку где-то в php. В каком методе jqgrid отправляет эти данные на сервер?

Вот мой код.

Index.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>

и edit.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')
 {

 }



?>

Спасибо за ваше время.

1 Ответ

4 голосов
/ 07 ноября 2011

Хм, наконец, я использовал плагин Tamper data firefox и понял, что данные из jqgrid отправляются через метод POST, а не GET, как я установил в mtype: label.

Итак, я изменил все $ _GET в файле edit.php на $ _POST и работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...