Запрос jQuery Ajax в Sharepoint 2007 (SOAP)

#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 не определена (анонимная функция) »