我仍然無法得到這個工作。我嘗試過使用字符串數組對象數組字典。我可能會錯誤地格式化我的JSON,但是我使用的是labs_JSON插件。如果我刪除我的數據並測試它正確調用的Web服務。本:我的代碼如下:JSON數據無法與Web服務簽名匹配
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();
});
//這是目前通過一個按鈕單擊事件引發 功能persistRecipeCategoriesToJSON(){VAR 項目= $('#menuRecipeCategories')。sortable('toArray'); var dictionaryData =''; var index = 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"]
的Webservice:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string UpdateMenuRecipeChecklist(*INPUT TYPE TO GO HERE*)
{
return "";
}
****玉傢伙。我解決了這個問題。看起來JSON實驗室插件格式不正確。 我加入這一行我persistRecipeCategoriesToJSON功能:**
var args = { jsonData: itemArray };
persistPositionUsingAjax($.json.encode(args));
的JSON然後由對象指定一個名稱格式正確無誤。 我再更新我的web服務的方法簽名:
public string UpdateMenuRecipeChecklist(string[] jsonData)
,然後一切正常:)。感謝所有嘗試提供幫助的人!
*好的傢伙。我解決了這個問題。看起來JSON實驗室插件格式不正確。我將這一行添加到我的persistRecipeCategoriesToJSON函數中: var args = {jsonData:itemArray}; persistPositionUsingAjax($。json.encode(args)); 然後通過爲對象分配名稱來正確格式化JSON。然後,我更新我的web服務的方法簽名: 公共字符串UpdateMenuRecipeChecklist(字符串[] jsonData) 和一切然後工作:)。感謝所有嘗試提供幫助的人! – Elixir 2010-09-02 07:10:08