【问题标题】:I'm doing an ajax call to Lists.asmx and I'm not getting anything back我正在对 Lists.asmx 进行 ajax 调用,但我没有得到任何回报
【发布时间】:2013-08-06 20:43:34
【问题描述】:

我有一个共享点列表,我正在使用 Lists.asmx 使用 ajax 来获取信息,但是服务器没有返回任何内容......我做错了什么?

这是我的代码:

var Currentlocurl;

$(document).ready(function() {
    $(".vincLista").bind("click", function(){
        L_Menu_BaseUrl = "empaquetamiento"
        if (window.location.port != null || window.location.port != '') {
            Currentlocurl = window.location.protocol + "//" + window.location.hostname + ":" + window.location.port + L_Menu_BaseUrl;
           }
        else {
            Currentlocurl = window.location.protocol + "//" + window.location.hostname + L_Menu_BaseUrl;
          }

         var listurl = Currentlocurl + "/_vti_bin/lists.asmx";
         var listname = "Empaquetamiento";
         var query = "<Where>" + 
            "<And>" +
                "<Eq>" + 
                    "<FieldRef Name='Plan' />" + 
                    "<Value Type='Choice'>" + $(this).data("plan") + "</Value>" + 
                "</Eq>" + 
                "<Eq>" + 
                    "<FieldRef Name='Operacion' />" + 
                    "<Value Type='Choice'>" + $(this).data("operacion") + "</Value>" + 
                "</Eq>" + 
            "</And>" +
            "</Where>";

         var soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \
            <soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
            <soapenv:Body> \
            <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
            <listName>" + listname + "</listName><query><Query>" + query + "</Query></query> \
            <viewFields><ViewFields>\
                <FieldRef Name='id' />\
                <FieldRef Name='Nombre' />\
                <FieldRef Name='Descripcion' />\
                <FieldRef Name='Codigo SAP' />\
                <FieldRef Name='Proforma' />\
                <FieldRef Name='Imagen grande' />\
                <FieldRef Name='Imagen pequeña' />\
            </ViewFields></viewFields> \
            </GetListItems> \
            </soapenv:Body></soapenv:Envelope>";

      $.ajax({
           url: listurl,
           beforeSend: function (xhr) {
                       xhr.setRequestHeader("SOAPAction","http://schemas.microsoft.com/sharepoint/soap/GetListItems");
                   },
          type: "POST",
          dataType: "xml",
          data: soap,
          complete: function (xData, status) {
               $(xData.responseXML).find("z\\:row").each(function () {
                    var infoDiv = $('<div/>', {class: "pieza", text: $(this).attr("ows_Nombre") + $(this).attr("ows_Descripcion")});
                    $("#info").append(infoDiv);
                  });
               },
          contentType: "text/xml; charset=utf-8"
        });
    });
});

这是我的html:

<!DOCTYPE html>
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7",lang=''><![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8",lang=''><![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9",lang=''><![endif]-->
<!--[if gt IE 8]><!-->
<html>
<!--<![endif]-->
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta charset="utf-8" />
    <title>Empaquetamiento</title />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="" />
    <meta name="author" content="" />

    <!-- Libraries-->
    <!-- Javascript extra-->
    <!--[if lt IE 9]>
    <script src="/empaquetamiento/JS/html5shiv.js"></script>
    <script src="/empaquetamiento/JS/html5shiv-printshiv.js"></script><![endif]-->
    <!-- Support for IE6-8 of HTML5 elements-->

    <script type="text/javascript" src="javascript/modernizr.min.js"></script>

    <!-- Css Styles-->
    <link rel="stylesheet" href="stylesheets/empaquetamiento.css"/>

</head>
<body>
    <button class="vincLista" data-plan="Plan1" data-operacion="inicio" >Traer info</button>
    <button class="vincLista" data-plan="Plan1" data-operacion="diseño" >Traer info</button>
    <button class="vincLista" data-plan="Plan2" data-operacion="inicio" >Traer info</button>
    <button class="vincLista" data-plan="Plan2" data-operacion="diseño" >Traer info</button>
    <div id="info" ></div>

    <button class="vincPieza" data-id="1" >Traer info</button>
    <div id="pieza" ></div>

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

正在调用 ajax 方法,但我从来没有从服务器得到答案,甚至没有错误。

【问题讨论】:

    标签: web-services jquery sharepoint wss-3.0


    【解决方案1】:

    我发现问题出在哪里,首先我在列表列中使用了锐元音,例如“operación”和“descripción”,这些词给我带来了一些麻烦,而且我的菜单基本 url 错误。

    这是经过一些重构后更正的代码:

    var Currentlocurl;
    
    $(document).ready(function() {
    
        L_Menu_BaseUrl = "/empaquetamiento"
        if (window.location.port != null || window.location.port != '') {
            Currentlocurl = window.location.protocol + "//" + window.location.hostname + ":" + window.location.port + L_Menu_BaseUrl;
        }
        else {
            Currentlocurl = window.location.protocol + "//" + window.location.hostname + L_Menu_BaseUrl;
        }
    
        var listurl = Currentlocurl + "/_vti_bin/lists.asmx";
        var listname = "Empaquetamiento";
    
        $(".vincLista").bind("click", function(){
            var query = "<Where>" + 
                "<And>" +
                    "<Eq>" + 
                        "<FieldRef Name='Plan' />" + 
                        "<Value Type='Choice'>" + $(this).data("plan") + "</Value>" + 
                    "</Eq>" +
                    "<Eq>" + 
                        "<FieldRef Name='Operacion' />" + 
                        "<Value Type='Choice'>" + $(this).data("operacion") + "</Value>" + 
                    "</Eq>" +
                "</And>" + 
                "</Where>";
    
             var viewFields = "<ViewFields>\
                    <FieldRef Name='Title' />\
                    <FieldRef Name='Nombre' />\
                    <FieldRef Name='Imagen' />\
                </ViewFields>";
    
            var soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \
                <soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
                <soapenv:Body> \
                <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                <listName>" + listname + "</listName><query><Query>" + query + "</Query></query> \
                <viewFields>" + viewFields + "</viewFields> \
                </GetListItems> \
                </soapenv:Body></soapenv:Envelope>";
    
            $.ajax({
                url: listurl,
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("SOAPAction","http://schemas.microsoft.com/sharepoint/soap/GetListItems");
                },
                type: "POST",
                dataType: "xml",
                data: soap,
                complete: function (xData, status) {
                    $(xData.responseXML).find("z\\:row, row").each(function () {
                        var infoDiv = $('<div/>', {class: "pieza", text: $(this).attr("ows_Nombre") + " - " + $(this).attr("ows_Imagen")});
                        $("#info").find("#pieza").delete;
                        $("#info").append(infoDiv);
                    });
                },
                error: function(xhr, ajaxOptions, thrownError) {
                    alert(thrownError);
                },
                contentType: "text/xml; charset=utf-8"
            });
        });
    });
    

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 FireBug 或 Chrome 的内置开发者工具调试您的服务器调用?您可以使用这些工具查看服务器调用和服务器响应。

      【讨论】:

      • 嗨,是的,谢谢我已经发现了一些我遇到的问题,首先 L_Menu_BaseUrl = "empaquetamiento" 应该是 L_Menu_BaseUrl = "/empaquetamiento" 才能正常工作。
      猜你喜欢
      • 2012-10-16
      • 2022-12-09
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2023-04-01
      • 2022-01-11
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多