總之,我們有特定的要求。即將某些數據放入表單元素中,然後提交表單。我們這樣做的原因是打開一個新窗口來返回Excel電子表格,但我們需要將參數提供給表單請求。在jQuery中使用JSON數據提交表單
基本上,我的數據點(JavaScript中的clickPoints變量)沒有被傳遞到服務器端的操作方法,但它是在表單請求中。
如下:
$("#excel").click(function() {
$("#Points").val(getExcelDataPoints(clickPoints));
$("#GeomType").val("LINESTRING");
$("#StartDate").val($("#start-date").val());
$("#EndDate").val($("#end-date").val());
$("#ExcelExport").submit(); // this is the form which I want to submit
});
所有其它參數的正常工作,除了點。這裏是getExcelDataPoints的定義
function getExcelDataPoints(points)
{
var data = "{'Points': [";
for(var i = 0; i < points.length; i++) {
data += "{'Da': '" + points[i].lat() + "', 'Ea': '" + points[i].lng() + "'},";
}
data = data.substr(0, data.length - 1);
data += "]}";
return data;
}
您可能想知道爲什麼我要手動構建它。有理由。事情是,這個肯定工作時,使用jQuery做$.ajax
請求,所以我知道格式是絕對好的。但是,在執行上面的第一個代碼清單時,它不起作用。
下面是服務器上的操作定義;
[HttpPost]
public IList<AISExcelPosition> ExcelExport(LatLng[] Points, GeomType GeomType, DateTime StartDate, DateTime EndDate)
{
var poo = Request.Form["Points"];
// Magical.... UNICORNS!
/*
`\
\\,
\\\,^,.,,.
,;7~((\))`;;,,
,(@') ;)`))\;;',
) .),(())\;,
/;`,,/7),)))))\,, ,,,... ,
(&)` (,((,((;())\,_,,;'` `\\,
`" `),))),/(( `)\,
'1/';/; ` ))),
(, ( / ) ((/,
/\ / ((('
(6--\% ,> ,,,( /'))\'
\,\,/ ,/`----~`\ \ >,))))'
\// `--7>' /((((('
(,9 // /'('((\\\,
\ \,, (/,/ '\`\\'\
`\_)1 (_)Kk `\`\\`\
`\| \Z `\
` " `
*/
是的。我的代碼中有一隻寵物獨角獸。
您會看到var poo = Request.Form["Points"];
位,我們在那裏向其中證明(並在觀察底層POST請求中的表單數據後)數據確實存在,所有格式都很好。
這裏的實際JSON數據:
"{'Points': [{'Da': '49.45995313552066', 'Ea': '-2.5134216308593977'},{'Da': '49.45894893804116', 'Ea': '-2.5134216308593977'}]}"
什麼我應該做的任何線索?
你是什麼意思的「它不工作」?我無法真正瞭解你在這裏/你的問題所在。 – 2011-04-21 09:47:28
保持寵物獨角獸的+1 .. – 2011-04-21 09:53:51
@Marcel Jackwerth:服務器端的Points變量永遠不會有值,它始終爲空。 – Kezzer 2011-04-21 09:54:52