2013-11-27 2 views
0

У меня есть требование, чтобы иметь возможность извлекать данные из повторяющейся таблицы в форме InfoPath и помещать их в отчет. Я нашел файл решения на Codeplex, который будет считывать данные из повторяющейся таблицы и выводить их как XML через SOAP-запрос. Я пытаюсь прочитать SOAP-запрос и вывести его на веб-страницу через JQuery в CEWP. Я довольно новичок в этом, и я немного потерял, как подойти к этому. Веб-сервис представляет этот пример кода:чтение пользовательских веб-сервисов в SharePoint 2010

POST /_vti_bin/InfoPathDB/InfoPathDB.asmx HTTP/1.1 
Host: 10.158.2.5 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 
<?xml version="1.0" encoding="utf-8"?> 

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
<soap12:Body> 
    <QueryFormLibrary xmlns="http://infopathdb.codeplex.com/"> 
     <SiteURL>string</SiteURL> 
     <FormLibraryTitle>string</FormLibraryTitle> 
     <OptionalContentType>string</OptionalContentType> 
     <OptionalCAMLFilter>string</OptionalCAMLFilter> 
     <OptionalBooleanIncludeAttachments>string</OptionalBooleanIncludeAttachments> 
    </QueryFormLibrary> 
    </soap12:Body> 
</soap12:Envelope> 

HTTP/1.1 200 OK 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <QueryFormLibraryResponse xmlns="http://infopathdb.codeplex.com/"> 
     <QueryFormLibraryResult>xml</QueryFormLibraryResult> 
    </QueryFormLibraryResponse> 
    </soap12:Body> 
</soap12:Envelope> 

Я немного запутался, по которому часть должна идти туда, где в моем коде JQuery. Код, который я пытаюсь адаптировать, это:

<script src="/Site_Assets/jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     var soapEnv = 
      <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <QueryFormLibrary xmlns="http://infopathdb.codeplex.com/"> 
     <SiteURL>http://255.255.255.1</SiteURL> 
     <FormLibraryTitle>List Entries</FormLibraryTitle> 
     <OptionalContentType></OptionalContentType> 
     <OptionalCAMLFilter></OptionalCAMLFilter> 
     <OptionalBooleanIncludeAttachments></OptionalBooleanIncludeAttachments> 
    </QueryFormLibrary> 
    </soap12:Body> 
</soap12:Envelope>"; 

     $.ajax({ 
      url: "/_vti_bin/InfoPathDB/InfoPathDB.asmx HTTP/1.1", 
      type: "POST", 
      dataType: "xml", 
      data: soapEnv, 
      complete: processResult, 
      contentType: "text/xml; charset=\"utf-8\"" 
     }); 
    }); 

function processResult(xData, status) { 
    $(xData.responseXML).find("z\\:row").each(function() { 
          var iDesc=$(this).attr("FieldOne"); 
          var iResp=$(this).attr("FieldTwo"); 
      var iID=$(this).attr("ows_ID"); 
      var liHtml = "<div class='question' id='"+iID+"'>" + iDesc + "</div><div class='answer' id='a"+iID+"'>"+ iResp +"</a></div>"; 
          $("#entries").append(liHtml); 
}</script> 

<div id="entries">&#160;</div> 

Любые указания на то, что я делаю неправильно/правильно?

ответ

0

Ok- Я все понял, после многократного крушения и некоторой поддержки со стороны автора веб-сервиса. Я использую JSON для получения моих данных.

Вот успешный блок кода:

<script> 
function getJSON(SiteURL, FormLibraryTitle, OptionalContentType, OptionalCAMLFilter, OptionalBooleanIncludeAttachments) { 
var test; 
    $.ajax({ 
     type: "POST", 
     url: "/_vti_bin/InfoPathDB/InfoPathDB.asmx/QueryFormLibraryAsJSON", 
     data: "{'SiteURL': '" + SiteURL + "', 'FormLibraryTitle': '" + FormLibraryTitle + "', 'OptionalContentType':'" + OptionalContentType + "', 'OptionalCAMLFilter':'" + OptionalCAMLFilter + "', 'OptionalBooleanIncludeAttachments':'" + OptionalBooleanIncludeAttachments + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
     // Save for F15 Developer Tools to see 
      test = JSON.parse(msg.d); 
      outputJSON(test); 
     }, 
     error: function (xhr) { 
      alert(xhr); 
     } 
    }); 
}; 
</script> 

Это то, что кормит свою выходную функцию, которая принимает (тест) объекта и подает выбранные элементы в HTML-таблицы.

Смежные вопросы