jqgrid saveRow不调用ajax

如何解决jqgrid saveRow不调用ajax

| 尽管我仍然无法将行数据保存到服务器,但与jqgrid一起到达那里 我的微型应用程序为每一行创建按钮,从而调用googlemaps地理编码。 地理编码将返回的数据填写在我的页面上的表单中。 我有3个单独的表单字段,每个表单字段都有自己的按钮,因此用户可以使用正确的地址更新行,每个按钮的rel都更改为刚刚对地址进行地理编码的行的id。 我的按钮具有此功能: 编辑 - - - - - - - 我已更改代码以尝试从saveRow获取响应 如果我警告saveRow它返回false,则在Firebug中看不到任何AJAX调用正在生成, 我尝试放置一个错误函数来捕获错误,但是似乎没有被调用。 Oleg指出数据库中有多个ID,但这是不可能的,因为它是主键自动编号。 我没有看到对我的server.php的请求来更新被调用的记录。
$(\'body\').delegate(\'#displayaddr_btn\',\'click\',function(){
    myID = $(this).attr(\'rel\');
    myLat = $(\'#lat\').val();
    myLng = $(\'#lng\').val();
    myAddress = $(\'#displayaddr\').val();    
    alert(\'ID:\'+myID+\' myLat: \'+myLat+\' myLng: \'+myLng+\' Addt: \'+myAddress);
    jQuery(\"#rowed2\").jqGrid(\'setRowData\',myID,{ lat_mdt:myLat,lng_mdt:myLng,displayaddr_mdt:myAddress }); 
alert(jQuery(\“#rowed2 \”)。jqGrid(\'saveRow \',myID)         jQuery(\“#rowed2 \”)。jqGrid(\'saveRow \',myID,             {errorfunc:function(id,error){                 alert(\'saveRow()中有错误-ID:\'+ id + \'Error:\'+ error);             }         });     }) 警报似乎没有发生任何输出所有应有的信息,但是我看不到要更新记录的处理页面的调用。 ------------更新以回应Oleg ------------------------------- 嗨,奥列格(Oleg),感谢您抽出宝贵的时间,确实我的php文件中存在记录更新错误, 现在已固定,输出键数:4匹配值数:4my update = UPDATE mapdata_mdt SET idetp_mdt = 0,geoaddr_mdt = \'n11hl \',active_mdt = 0,flag_mdt = 0 WHERE id_mdt = 1343是我拥有的代码放在php页面中,这是我的预期输出。 实际上,网格上的编辑功能可以按预期工作: 我的问题是当我尝试从jqrid外部的按钮运行
saveRow()
时。 当按下网格行的“ geo”按钮时,将在网格下方生成按钮(其中的3个)) 这是我在单击按钮时遇到问题的地方ѭ1false返回false,从中可以看到对server.php的调用甚至没有进行,因此我无法调试任何响应。 (我以前没有使用过ASP.NET MVC的WFC,ASMX Web服务,并且现在不想使事情复杂化!) 缺少什么?测试网址 (对列表中第一个称为TEST的记录进行地理编码以填充表格,然后单击相应文本字段的保存按钮之一) 这是我的所有代码:
function setAddrButtons(myID,mylat,mylng){
        alert(\' setaddrButtons----ID:\'+myID+\' myLat: \'+myLat+\' myLng: \'+myLng+\' Addt: \'+myAddress);

        $(\'#displayaddr_btn\').attr(\'rel\',myID);
        $(\'#revlook_btn\').attr(\'rel\',myID);
        $(\'#altaddr_btn\').attr(\'rel\',myID);
        $(\'#lat\').val(mylat);
        $(\'#lng\').val(mylng);   
    }
    //jquery grid stuff
   $(\'body\').delegate(\'#displayaddr_btn\',function(){
        myID = $(this).attr(\'rel\');
        myLat = $(\'#lat\').val();
        myLng = $(\'#lng\').val();
        myAddress = $(\'#displayaddr\').val();    
        alert(\'ID:\'+myID+\' myLat: \'+myLat+\' myLng: \'+myLng+\' Addt: \'+myAddress);
        alert(jQuery(\"#rowed2\").jqGrid(\'saveRow\',myID)
    jQuery(\"#rowed2\").jqGrid(\'saveRow\',{errorfunc:function(id,error){
            alert(\'there was an error in saveRow()- ID:\'+id+\' Error: \'+error);
        }
    });

    })
    $(\'body\').delegate(\'#revlook_btn\',function(){
        myID = $(this).attr(\'rel\');
        myLat = $(\'#lat\').val();
        myLng = $(\'#lng\').val();
        myAddress = $(\'#revlook\').val();

        alert(\'ID:\'+myID+\' myLat: \'+myLat+\' myLng: \'+myLng+\' Addt: \'+myAddress);

        jQuery(\"#rowed2\").jqGrid(\'setRowData\',displayaddr_mdt:myAddress });
        alert(jQuery(\"#rowed2\").jqGrid(\'saveRow\',error){
            alert(\'there was an error in saveRow()- ID:\'+id+\' Error: \'+error);
        }
    });

    })
    $(\'body\').delegate(\'#altaddr_btn\',function(){
        myID = $(this).attr(\'rel\');
        myLat = $(\'#lat\').val();
        myLng = $(\'#lng\').val();
        myAddress = $(\'#altaddr\').val();
        alert(\'ID:\'+myID+\' myLat: \'+myLat+\' myLng: \'+myLng+\' Addt: \'+myAddress);

        alert(jQuery(\"#rowed2\").jqGrid(\'saveRow\',error){
            alert(\'there was an error in saveRow()- ID:\'+id+\' Error: \'+error);
        }
    }); 

    })

    myGrid = jQuery(\"#rowed2\").jqGrid({ 
        url:\'data/stokistdata_s_json.php?q=3\',datatype: \"json\",mtype: \"POST\",rowNum:10,rowList:[50,100,150,200,300,400,500,600],pager: \'#prowed2\',sortname: \'name_mdt\',viewrecords: true,gridview:true,sortorder: \"asc\",rowNum:50,scroll: true,editurl: \"data/server.php\",caption:\"Stockist\'s and Orchid days\",colNames:[
            \'Actions\',\'id\',\'Type\',\'Name\',\'Geo Address\',\'Display Address\',\'Telephone\',\'Email\',\'website\',\'lat\',\'lng\',\'flag\',\'description\',\'active\'
        ],colModel:[{
            name:\'Actions\',index:\'Actions\',width:100,sortable:false,search:false
        },{
            name:\'id_mdt\',index:\'id_mdt\',width:15,align:\"left\",sortable:true,search:false,hidden: true,editable: true,editrules: { edithidden: true },editoptions:{readonly:true},hidedlg: true,key: true
        },{
            name:\'id_etp\',index:\'id_etp\',width:90,editable:true,edittype:\"select\",formatter:\'select\',editoptions:{value:{1:\'Stokist\',0:\'Orchid Day\'}},editrules:{required:true},search:true,stype:\'select\',sopt: [\'eq\'],searchoptions:{value:{\'\':\'All\',1:\'Stockist\',2:\'Orchid Day\'}}
        },{
            name:\'Name_mdt\',index:\'Name_mdt\',width:150,stype:\'text\',sopt:[\'cn\']
        },{
            name:\'geoaddr_mdt\',index:\'geoaddr_mdt\',edittype:\"textarea\",editoptions:{rows:\"3\",cols:\"30\"}
        },{
            name:\'displayaddr_mdt\',index:\'displayaddr_mdt\',{
            name:\'telephone_mdt\',index:\'telephone_mdt\',width:80,{
            name:\'email_mdt\',index:\'email_mdt\',editrules:{email:true,required:false},{
            name:\'website_mdt\',index:\'website_mdt\',editrules:{url:true,{
            name:\'lat_mdt\',index:\'lat_mdt\',width:40,{
            name:\'lng_mdt\',index:\'lng_mdt\',{
            name:\'flag_mdt\',index:\'flag_mdt\',width:20,editoptions: {value:{1:\'Flagged\',0:\'No Flag\'}},//
            stype:\'select\',1:\'Flagged\',0:\'No Flag\'}}//{value:\":Both;1:Flagged;0:No Flag\"}
        },{
            name:\'description_mdt\',index:\'description_mdt\',{
            name:\'active_mdt\',index:\'active_mdt\',editoptions: {value:{1:\'Active\',0:\'Hidden\'}},\'1\':\'Active\',\'0\':\'Hidden\'}} //{value:\":Both;1:Active;0:Hidden\"}
        }],search : {
             caption: \"Search...\",Find: \"Find\",Reset: \"Reset\",matchText: \" match\",rulesText: \" rules\"
       },gridComplete: function(){ 
            var ids = jQuery(\"#rowed2\").jqGrid(\'getDataIDs\'); 
            for(var i=0;i < ids.length;i++){ 
                var cl = ids[i]; 
                be = \"<input style=\'height:22px;width:20px;\' type=\'button\' value=\'E\' alt=\'Edit Location\' onclick=\\\"jQuery(\'#rowed2\').editGridRow(\'\"+cl+\"\');\\\" />\"; 
                se = \"<input style=\'height:22px;width:20px;\' type=\'button\' value=\'S\' onclick=\\\"jQuery(\'#rowed2\').saveRow(\'\"+cl+\"\');\\\" />\"; 
                ce = \"<input style=\'height:22px;width:20px;\' type=\'button\' value=\'C\' onclick=\\\"jQuery(\'#rowed2\').restoreRow(\'\"+cl+\"\');\\\" />\";
                fl = \"<input style=\'height:22px;width:50px;\' type=\'button\' value=\'Find\' alt=\'Find Location\' class=\'findMe\' rel=\'\"+cl+\"\' />\";
                gc = \"<input style=\'height:22px;width:50px;\' type=\'button\' value=\'Geo\' class=\'geocodeMe\' rel=\'\"+cl+\"\' />\";
                jQuery(\"#rowed2\").jqGrid(\'setRowData\',ids[i],{Actions:fl+gc}); 
            } 
        }
    }); 

    jQuery(\"#rowed2\").jqGrid(\'navGrid\',\"#prowed2\",{edit:true,add:true,del:true,refresh:true},{closeOnEscape:true,recreateForm: true,width:500},width:500}    // Add options

    ); 
    myGrid.jqGrid(\'filterToolbar\',{defaultSearch:\'cn\',stringResult:true});
    

解决方法

我尝试了您的测试U​​RL,并针对Fiddler跟踪了第一行的编辑结果。 如果我编辑网格的第一行并在\'Name \'字段中键入\'test \'文本,我会看到jqGrid将具有数据的HTTP POST请求发送到服务器
id_mdt=1343&id_etp=0&Name_mdt=test&geoaddr_mdt=n11hl&displayaddr_mdt=&telephone_mdt=&email_mdt=&website_mdt=&lat_mdt=&lng_mdt=&flag_mdt=0&description_mdt=&active_mdt=0&oper=edit&id=1343
数据包含所有可编辑文件的容器以及两个附加参数
oper=edit
id=1343
(与
id_mdt=1343
相同)。如果成功,您的服务器应使用任何成功的HTTP代码进行修改和响应,如果数据更新失败,则应使用错误的HTTP代码进行修改和响应。您的服务器响应以标头开头
HTTP/1.1 200 OK
Content-Type: text/html
并在体内
Number of keys: 4 matches number of values: 4my update = UPDATE mapdata_mdt SET idetp_mdt = 0,geoaddr_mdt = \'n11hl\',active_mdt = 0,flag_mdt = 0 WHERE id_mdt = 1343<br />
<b>Notice</b>:  Undefined variable: growthConn in <b>E:\\Domains\\f\\focus-on-plants.com\\user\\htdocs\\admin\\stokists\\data\\server.php</b> on line <b>137</b><br />
<br />
<b>Warning</b>:  mysql_query(): supplied argument is not a valid MySQL-Link resource in <b>E:\\Domains\\f\\focus-on-plants.com\\user\\htdocs\\admin\\stokists\\data\\server.php</b> on line <b>137</b><br />
所以可以看到很多问题: 可以将响应中的文本“键数:4个匹配项”解释为
id_mdt
不是相应数据库表中的主键,因为作为一个数据项存在的更多内容为
id_mdt
。您应该验证数据库的设计。 奇怪的错误消息显示更新失败。您应该检查“ 12”服务器代码的第137行。 您应该更改代码,以便在出错时将任何错误的HTTP代码放置在服务器响应中。 我自己没有使用PHP,所以我不能给您更准确的建议,但是对我来说很明显,首先您应该在服务器代码中搜索错误。 再说一遍。从服务器头中可以看到您使用Microsoft IIS 7.0作为Web服务器。为什么不使用站点的ASP.NET MVC的WFC,ASMX Web服务?无论如何,我都应该在Web服务器上启用动态和静态包含的压缩。这将改善站点的性能。另外,您应该考虑更改
gridComplete
中当前使用的代码以提高性能。有很多选择。在这里看看。例如在这里和这里(在最后一个答案中,性能和事件绑定部分很重要;可以从按钮的链接替换自定义格式器)。 更新:在我看来,您的下一个问题是您尝试使用saveRow只是将有关行的信息发布到服务器。
saveRow
发布有关内联编辑模式中行的信息,因此在调用editRow之后。连同其他内容,editRow使用以下代码将
editable=\"1\"
属性添加到行((16ѭ元素):
$(\"#\"+rowid).attr(\"editable\",\"1\");
在接近saveRow测试开始的地方,尝试保存的行具有属性。它不是返回并且什么也不做。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-