【发布时间】:2010-09-02 14:31:11
【问题描述】:
我似乎仍然无法让它工作。我尝试过字符串数组对象数组字典。我的 JSON 格式可能不正确,但我使用的是 labs_JSON 插件。如果我删除我的数据并测试它正确调用的网络服务。 :我的代码如下所示:
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>
JS:
$(function () {
$("#menuRecipeCategories, #availabeMenuRecipeCategories").sortable({
connectWith: '.connectedSortable',
update: function (ev, ui) {
//var result = $('#menuRecipeCategories').sortable('toArray');
//updateSequenceNumber(result);
}
}).disableSelection();
});
//这是目前通过按钮点击事件引发的 功能坚持食谱类别ToJSON(){ var items = $('#menuRecipeCategories').sortable('toArray'); var 字典数据 = ''; 变量索引 = 0; var itemArray = new Array();
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 labs 插件似乎 JSON 格式不正确。 我将此行添加到我的 persistRecipeCategoriesToJSON 函数中:**
var args = { jsonData: itemArray };
persistPositionUsingAjax($.json.encode(args));
然后通过为对象分配名称来正确格式化 JSON。 然后我将我的网络服务的方法签名更新为:
public string UpdateMenuRecipeChecklist(string[] jsonData)
然后一切正常:)。感谢所有试图提供帮助的人!
【问题讨论】:
标签: asp.net jquery json service