#jquery #ajax #sharepoint #soap #sharepoint-2007
#jquery #ajax #sharepoint #soap #sharepoint-2007
Вопрос:
У меня есть следующий веб-сервис:
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /_vti_bin/QuickLinks.asmx HTTP/1.1
Host: myintracomm-design.ec.europa.eu
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://ec.europa.eu/GetSuggestions"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetSuggestions xmlns="http://ec.europa.eu/">
<prefixText>string</prefixText>
<count>int</count>
</GetSuggestions>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetSuggestionsResponse xmlns="http://ec.europa.eu/">
<GetSuggestionsResult>
<string>string</string>
<string>string</string>
</GetSuggestionsResult>
</GetSuggestionsResponse>
</soap:Body>
</soap:Envelope>
Который я нахожу, перейдя по URL-адресу, например:
http://www.bla.eu/_vti_bin/QuickLinks.asmx?op=GetSuggestions
Я попытался выполнить Ajax-запрос для извлечения содержимого, лежащего в основе этого, используя этот код:
var productServiceUrl = 'http://myintracomm-design.ec.europa.eu/_vti_bin/QuickLinks.asmx?op=GetSuggestions';
function LoadData() {
var soapEnv =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetSuggestions xmlns="http://ec.europa.eu/">
<prefixText>sys</prefixTest>
<count>10</count>
</GetSuggestions>
</soap:Body>
</soap:Envelope>';
$jQuery.ajax({
url: productServiceUrl,
type: "POST",
dataType: "xml",
data: soapEnv,
complete: OnLinksFetched,
contentType: "text/xml; charset="utf-8""
});
}
function OnLinksFetched(xmlHttpRequest, status)
{
$jQuery(xmlHttpRequest.responseXML)
.find('GetSuggestionsResult')
.each(function() {
var name = $jQuery(this).find('Name').text();
$jQuery("#links").append(name);
});}
и я добавил простое событие onclick к ссылке (только для целей тестирования). К сожалению, я получаю ошибку неправильного запроса.
Я пробовал много комбинаций запроса soap (поскольку у меня нет опыта работы с SOAP), но безуспешно. Решил опубликовать здесь после 5 дней усилий. Заранее спасибо за любую помощь.
Ответ №1:
Вы можете попробовать добавить заголовок запроса к вызову веб-службы.
$.ajax({
url: productServiceUrl,
beforeSend: function(xhr) {
xhr.setRequestHeader("SOAPAction",
"http://ec.europa.eu/GetSuggestions"
},
type: "POST",
dataType: "xml",
data: soapEnv,
complete: OnLinksFetched,
contentType: "text/xml; charset="utf-8""
});
Комментарии:
1. Я получаю » Неперехваченную ошибку ссылки: loadData не определена (анонимная функция) »