我有一个sharepoint列表,我正在使用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方法,但我从来没有从服务器得到答案,甚至没有错误。
答案 0 :(得分:1)
我发现问题是什么,首先我在我的列表栏中使用了像“operación”和“descripción”这样的字母,这句话让我有些麻烦,而且我的菜单基本网址错了。< / p>
经过一些重构后,这是更正后的代码:
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"
});
});
});
答案 1 :(得分:0)
您是否尝试使用FireBug或Chrome的内置开发人员工具调试服务器调用?您可以使用这些工具查看服务器调用和服务器响应。