我似乎还是不能把这个弄到手工作。爱尝试了字符串数组对象数组字典。我可能格式化我的JSON不正确,但我使用的是labs\u JSON插件。如果我删除数据并测试它正确调用的webservice。我的代码如下所示:
HTML格式:
<div style="display: block; float: left;">
<asp:Repeater ID="rptMenuRecipeCategories" runat="server">
<HeaderTemplate>
<div class="recipeChecklistHeader">Menu Recipe Categories</div>
<ul id="menuRecipeCategories" class="connectedSortable">
</HeaderTemplate>
<ItemTemplate>
<li id="item_<%# Container.ItemIndex + 1 %>" recipeCategoryId='<%# Eval("RecipeCategoryID") %>' >
<%# Eval("RecipeCategory") %>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</div>
<div style="display: block; float: left">
<asp:Repeater ID="rptAvailableMenuRecipeCategories" runat="server">
<HeaderTemplate>
<div class="recipeChecklistHeader">Available Menu Recipes</div>
<ul id="availabeMenuRecipeCategories" class="connectedSortable">
</HeaderTemplate>
<ItemTemplate>
<li id="item_<%# Container.ItemIndex + 1 %>" recipeCategoryId='<%# Eval("RecipeCategoryID") %>'>
<%# Eval("RecipeCategory") %>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</div>
$(function () {
$("#menuRecipeCategories, #availabeMenuRecipeCategories").sortable({
connectWith: '.connectedSortable',
update: function (ev, ui) {
//var result = $('#menuRecipeCategories').sortable('toArray');
//updateSequenceNumber(result);
}
}).disableSelection();
});
函数persistRecipeCategorisToJSON(){
var items=$('#menuRecipeCategories').sortable('toArray');
var字典数据=“”;
var itemArray=新数组();
for (i = 0; i <= items.length - 1; i++) {
if (items[i].length == 0)
continue;
var item = $('#' + items[i])[0];
var recipeCategoryId = item.attributes["recipeCategoryId"].nodeValue;
itemArray[i] = recipeCategoryId;
}
persistPositionUsingAjax($.json.encode(itemArray));
}
$(document).ready(function () {
$.ajaxSetup({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
});
function persistPositionUsingAjax(jsonData) {
var webServiceURL = '<%=ResolveUrl("~/UserControls/MenuRecipeChecklistService.asmx")%>' + '/UpdateMenuRecipeChecklist';
$.ajax({
// This is page.name/MethodName
url: webServiceURL,
// This is the data (method arguments)
data: jsonData,
// This is the handler for success.
success: function (msg) {
alert('success');
}
});
}
JSON码:
["1","2"]
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string UpdateMenuRecipeChecklist(*INPUT TYPE TO GO HERE*)
{
return "";
}
****好的,伙计们。我已经解决了这个问题。JSON实验室插件的JSON格式似乎不正确。
我在PersistRecipeCategorisToJSON函数中添加了以下行:**
var args = { jsonData: itemArray };
persistPositionUsingAjax($.json.encode(args));
然后通过为对象指定一个名称来正确格式化JSON。
然后,我将webservice的方法签名更新为:
public string UpdateMenuRecipeChecklist(string[] jsonData)