Я пытаюсь использовать jQuery для получения данных из веб-службы ASP.NET (SharePoint Server 2007 lists.asmx), но любой вызов веб-службы действительно поможет в качестве первого шага в этом направлении.





Вот пример вызова вашего веб-сервиса с помощью jQuery.get:
$.get("http://domain.com/webservice.asmx", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
В приведенном выше примере мы вызываем webservice.asmx, передавая два параметра: имя и время. Затем получение вывода службы в функции обратного вызова.
Я не знаю об этой конкретной веб-службе SharePoint, но вы можете украсить метод страницы или веб-службу с помощью <WebMethod()> (в VB.NET), чтобы гарантировать ее сериализацию в JSON. Вероятно, вы можете просто обернуть метод, который webservice.asmx использует для внутренних целей, в свой собственный веб-сервис.
У Дэйва Уорда есть хорошее прохождение по этому поводу.
Я довольно часто использую ajaxpro вместе с jQuery. ajaxpro позволяет мне вызывать функции .NET из JavaScript, а для остальных я использую jQuery.
У меня есть достойный пример в jQuery AJAX и ASMX использования вызова jQuery AJAX с веб-службами asmx ...
Есть строка кода, которую нужно раскомментировать, чтобы вернуть JSON.
Ссылка 404 не найдена. Рекомендуется всегда включать в ответ основной контент на случай, если владелец сайта внезапно выиграет в лотерею, разводится со своей женой и переезжает на Багамы.
Я использую этот метод как оболочку, чтобы отправлять параметры. Кроме того, использование переменных в верхней части метода позволяет минимизировать его в более высоком соотношении и позволяет повторно использовать некоторый код при выполнении нескольких похожих вызовов.
function InfoByDate(sDate, eDate){
var divToBeWorkedOn = "#AjaxPlaceHolder";
var webMethod = "http://MyWebService/Web.asmx/GetInfoByDates";
var parameters = "{'sDate':'" + sDate + "','eDate':'" + eDate + "'}";
$.ajax({
type: "POST",
url: webMethod,
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$(divToBeWorkedOn).html(msg.d);
},
error: function(e){
$(divToBeWorkedOn).html("Unavailable");
}
});
}
Надеюсь, это поможет.
Обратите внимание, что для этого требуется, чтобы платформа 3.5 предоставляла веб-методы JSON, которые можно использовать таким образом.
это строка: "var webMethod = 'MyWebService / Web.asmx / GetInfoByDates'" намеренно пропущена точка с запятой?
Есть ли способ просмотреть сообщение об ошибке? мой продолжает говорить "недоступен", но мне нужно просмотреть фактическую ошибку, спасибо
если вы используете firebug или консоль в chrome, просто сохраните "e" в переменной, а затем проверьте ее. то есть window.ZZZ = e;
@Bobby, я выполнил шаги, упомянутые в вашем ответе, и могу вызвать в веб-службу. Он отлично работает в Chrome, но когда я попробовал то же самое в firefox, я получаю 0 в ответ, у вас есть какие-нибудь идеи? Спасибо
А как получить параметры на /Web.asmx/GetInfoByDates ??
Мне было интересно, следует ли нам поместить этот код в HTML и использовать вокруг него тег <script>?
$.ajax({
type: 'POST',
url: 'data.asmx/getText',
data: {'argInput' : 'input arg(s)'},
complete: function(xData, status) {
$('#txt').html($(xData.responseXML).text()); // result
}
});
SPServices - это библиотека jQuery, которая абстрагирует веб-службы SharePoint и упрощает их использование.
Это проверенный для SharePoint 2007.
Список поддерживаемых операций для Lists.asmx можно найти здесь
В этом примере мы захватываем все элементы из списка Announcements и отображаем заголовки в маркированном списке в div tasksUL:
<script type = "text/javascript" src = "filelink/jquery-1.6.1.min.js"></script>
<script type = "text/javascript" src = "filelink/jquery.SPServices-0.6.2.min.js"></script>
<script language = "javascript" type = "text/javascript">
$(document).ready(function() {
$().SPServices({
operation: "GetListItems",
async: false,
listName: "Announcements",
CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
completefunc: function (xData, Status) {
$(xData.responseXML).SPFilterNode("z:row").each(function() {
var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>";
$("#tasksUL").append(liHtml);
});
}
});
});
</script>
<ul id = "tasksUL"/>
Чем служба ASP.NET будет отличаться от службы, работающей на Tomcat? Другими словами: я не думаю, что вообще имеет значение, какое программное обеспечение работает на сервере.