2011-12-19 37 views
2

想知道是否有人使用jQgrid从同一页面上的其他表单发布动态数据。动态的,因为我不知道要发布的输入名称,但宁愿只是在呈现网格时发布整个序列化表单。jQgrid在加载时发布自定义数据

我得到尽可能在postData中设置额外的数据,但它没有得到正确的传递,因为它显示双重网址编码。请参阅:

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

经过这里不同的线程,并在其他网站上,我已经尝试了建议JSON.stringify和形式serializearray(),以及自定义功能无济于事。表单数据显示为已编码,并且在另一侧通过_GET不可用。

任何建议将是伟大的 - 谢谢!

回答

1

我不确定在哪种表单中您想从服务器端的表单获取数据。不过我建议你采用以下形式

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); 
    } 
} 

使用postData在下面的测试形式的情况下

<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流量。

+0

你好奥列格!我尝试在POST数据中发送整个表单数据作为搜索参数,并尝试在MVC控制器中获得与强类型模型相同的结果。但我失败了。这里是我的帖子http://stackoverflow.com/questions/14522263/post-form-with-jqgrid-in-asp-net-mvc-3。如果你分享你的想法来实现这个目标,那将会很有帮助吗? – 2013-01-27 11:37:08

+0

@Murali:我必须为我的客户做一些紧急的工作。稍后我会尝试阅读你的问题,我会尽力帮助你。你可以附加更多细节问题吗?例如'SearchViewModel'的定义和'id =“search-form”'形式的HTML片段。你是否对[Fiddler](http://www.fiddler2.com/Fiddler2/version.asp),[Firebug](http://getfirebug.com/)或IE或Chrome的开发者工具进行了分析,请求被发送到服务器?您也可以包含请求的详细信息和包含错误消息的响应。 – Oleg 2013-01-27 18:11:07

+0

我用视图模型和表单以及其他所需信息更新了我的问题。我已经看到我的使用Firebug的发布请求参数,我可以通过使用Request [“PostData”]在控制器中将其作为JSON字符串进行检索,但是我如何才能通过检索操作方法参数viewModel和viewModel来获取它作为强类型。名称等? – 2013-01-28 05:10:38