[Изменить]
Другая вещь, которую вы можете попробовать, это изменить dataType в вызове JQuery на «xml». Если это не сработает, вы можете создать свой собственный прокси-веб-сервис, который вызывает удаленный, а затем вернуть данные в формате JSON.
Я подозреваю, что проблема в коде на стороне сервера. Я не уверен, будет ли это работать для вас, но вот некоторый рабочий код, который показывает, что JQuery вызывает мой WebMethod. Надеюсь, вы можете сравнить это с вашим и заставить его работать. Дайте нам знать, что решение. Надеюсь, это поможет.
[Server Code]
using System;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class ForumService : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public VoteCastResult CastQuestionVote(string itemID, QAForum.Bll.VoteType voteType)
{
try
{
User usr = SecurityHelper.GetOrCreateUser();
Guid question = new Guid(itemID);
return new QuestionVoteController().CastQuestionVote(usr, question, voteType);
}
catch (Exception ex)
{
return new VoteCastResult(VoteCastStatusType.otherIssue, 0, ex.Message);
}
}
}
[JQuery Code]
function AFTopicCastVote(clickContext, itemID, voteDirection, voteMethod)
{
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: (AFServiceUrl + voteMethod),
data: "{'itemID': '" + itemID + "','voteType': '" + voteDirection + "'}",
dataType: "json",
success: function (data, textStatus) {
AFTopicProcessVoteResult(clickContext, data.d);
//alert("data : " + data.d);
},
error: function ( XMLHttpRequest, textStatus, errorThrown)
{
alert("error casting vote: " + errorThrown);
}
});
}