【问题标题】:jQgrid posting custom data on loadjQgrid 在加载时发布自定义数据
【发布时间】:2012-01-23 20:23:53
【问题描述】:

想知道是否有人使用 jQgrid 在同一页面上发布来自另一个表单的动态数据。动态的,因为我不知道要发布的输入名称,但宁愿在渲染网格时只发布整个序列化表单。

我在 postData 中设置了额外的数据,但它没有正确地传递到 url,因为它看起来是双 url 编码的。见:

$(document).ready(function() {
  $("#rpt").jqGrid( 
  { url:'/get.json',
   postData: {filter: $('form').serialize()}, 
  datatype: "json", 
  gridview: true,
  colModel:[id:'col1']
 });
});

通过此处和其他站点上的各种线程,我尝试了表单上建议的 JSON.stringify 和 serializearray() 以及自定义函数,但均无济于事。表单数据显示为已编码,无法通过 _GET 在另一端获得。

任何建议都会很棒 - 谢谢!

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    我不确定您希望以哪种形式从服务器端的表单中获取数据。不过,我建议您以以下形式使用postData

    postData: {
        filter: function () {
            var result = {}, i, item,
                formInfo = $('form#myForm').serializeArray(),
                l = formInfo.length;
            for (i = 0; i < l; i++) {
                item = formInfo[i];
                result[item.name] = item.value;
            }
    
            return JSON.stringify(result);
        }
    }
    

    如果是以下测试表格

    <form id="myForm">
      <div><input type="text" name="a" value="1 from a" id="a" /></div>
      <div><input type="text" name="b" value="2 from b" id="b" /></div>
      <div><input type="hidden" name="c" value="3 from c" id="c" /></div>
      <div>
        <textarea name="d" rows="8" cols="40">4</textarea>
      </div>
      <div><select name="e">
        <option value="5" selected="selected">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
      </select></div>
      <div>
        <input type="checkbox" name="f" value="8" id="f" />
      </div>
    </form>
    

    result 变量将是

    var result = {
        a: "1 from a",
        b: "2 from b",
        c: "3 from c",
        d: "4",
        e: "5"
    }
    

    因此不会进行数据转换。然后我建议使用JSON.stringify 将对象result 转换为JSON 字符串。 (取决于可能不需要的服务器代码。)所以filters 参数将被发送为

    {"a":"1 from a","b":"2 from b","c":"3 from c","d":"4","e":"5"}
    

    您可以使用FiddlerFirebug查看对应的小demo的HTTP流量。

    【讨论】:

    • 你好奥列格!我尝试将整个表单数据作为 POST 数据中的搜索参数发送,并尝试在 MVC 控制器中获得与强类型模型相同的数据。但我失败了。这是我的帖子stackoverflow.com/questions/14522263/…。如果您分享您的想法来实现这一目标,那将是很大的帮助?
    • @Murali:我必须为我的一位客户做一些紧急工作。稍后我会试着读你的问题,我会尽力帮助你。你能在你的问题后面附上更多细节吗?例如SearchViewModel 的定义和带有id="search-form" 的表单的HTML 片段。您是否分析了FiddlerFirebug 或 IE 或 Chrome 的开发者工具,究竟哪个 HTTP 请求被发送到服务器?您也可以在错误消息中包含请求和响应的详细信息。
    • 我已经用视图模型和表单以及其他所需信息更新了我的问题。我已经使用 Firebug 看到了我的发布请求参数,我可以使用 Request["PostData"] 在控制器中将其作为 JSON 字符串检索,但我如何通过检索操作方法参数 viewModel 和 viewModel 来将其作为强类型。姓名等?
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2023-03-18
    • 2011-03-14
    相关资源
    最近更新 更多