Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX responseXML为空,带有jQuery UI模式表单_Javascript_Jquery Ui_Jquery - Fatal编程技术网

Javascript AJAX responseXML为空,带有jQuery UI模式表单

Javascript AJAX responseXML为空,带有jQuery UI模式表单,javascript,jquery-ui,jquery,Javascript,Jquery Ui,Jquery,我有一个对SharePoint web服务的jQuery ajax调用,我使用它将“搜索”结果附加到表中。只有一个简单的html表,一切正常,结果都被添加了,但是当我尝试将结果添加到jQuery UI模式表单时,调用返回0个结果,responseXML显示为null(responseText返回预期的字符串)。我希望我错过了一些简单的事情。欢迎提出任何意见 HTML: 这是CAML Web服务查询的测试页面 搜索成绩单 您的搜索结果是: 姓 名字 成绩单学校 收到日期 JavaScript(j

我有一个对SharePoint web服务的jQuery ajax调用,我使用它将“搜索”结果附加到表中。只有一个简单的html表,一切正常,结果都被添加了,但是当我尝试将结果添加到jQuery UI模式表单时,调用返回0个结果,responseXML显示为null(responseText返回预期的字符串)。我希望我错过了一些简单的事情。欢迎提出任何意见

HTML:

这是CAML Web服务查询的测试页面

搜索成绩单

您的搜索结果是:

姓 名字 成绩单学校 收到日期 JavaScript(jQuery/jQuery UI):

$(函数(){
//按钮控制
$(“#搜索项目”)
.按钮()
。单击(函数(){
搜索转录本();
});
//对话框控件
$(“#对话框结果”).dialog({
自动打开:错误,
可调整大小:false,
身高:300,
宽度:500,
莫代尔:是的,
按钮:{
取消:函数(){
$(此).dialog(“关闭”);
}
}
});
});
//查询SharePoint列表
功能搜索转录本(){
var soapEnv=“”
soapEnv+=“”
soapEnv+=“”
soapEnv+=“成绩单日志”
soapEnv+=“史密斯”
soapEnv+=“史密斯”
soapEnv+=“”
soapEnv+=“”
soapEnv+=“”
soapEnv+=“5000”
soapEnv+=“”
soapEnv+=“”
soapEnv+=“”;
$.ajax({
url:“/xxx/\u vti\u bin/lists.asmx”,
类型:“POST”,
数据类型:“xml”,
数据:soapEnv,
完成:processResult,
错误:errorResult,
contentType:“text/xml;字符集=\“utf-8”
});
}
//将项目添加到列表中
函数processResult(扩展数据){
var myFname=“”;
var myLname=“”;
var mySchool=“”;
var myDate=“”;
var myID=“”;
var itemUrl=“/xxx/DispForm.aspx?ID=”;
var-nr=0;
$(扩展数据.responseXML).find(“z\\:行”).each(函数(){
myFname=$(this.attr(“ows_First_Name”);
myLname=$(this.attr(“ows_Title”);
mySchool=$(this.attr(“ows_学院”);
var tmpd=$(this.attr(“ows_日期_接收”);
//检查无效日期
如果(!tmpd){
myDate=“不适用”;
}否则{
myDate=tmpd.substring(5,7)。替换(“0”,“0”)+“/”
myDate+=tmpd.子字符串(8,10)。替换(“0”,替换“)+”/“
myDate+=tmpd.substring(0,4);
}
myID=$(this.attr(“ows_ID”);
//创建新行
var AddRow=“”
AddRow+=“”+myFname+“”
AddRow+=“”+mySchool+“”
AddRow+=“”+myDate+“”
$(“#搜索数据”).append(AddRow);
nr+=1;
});
$(“#myResults”).html($(“#myResults”).html()+“”+nr)
$(“#对话框结果”)。对话框(“打开”);
}
//显示错误
函数错误结果(扩展数据){
警报(扩展数据.响应文本);
}

问题是带有responseXML的jQuery 1.9.1错误。正如我在评论中提到的,使用1.8.3版“解决”了这个问题。您可以在和上阅读更多关于它的信息。

我仍然无法让它正常工作,因此我不得不默认使用简单的html表格解决方案(它工作正常,只是没有那么花哨)。如果有人有任何猜测,我愿意试一试。以防万一有人无意中发现了这一点,我找出了问题所在。这是jQuery的版本。我的AJAX调用对1.9.1不满意,所以我只是将引用更改为1.8.3,一切都很好。如果我用1.9.1解决它,我会把它贴在这里。
<p id="myDescrip">This is a test page for CAML Web Service Queries</p>
<button id="SearchItems">Search for Transcripts</button>
<div id="dialog-results" title="Search Results">
    <p id="myResults">Your search results are:</p>
    <table id="SearchData" class="myTable">
        <tr>
            <th>Last Name</th>
            <th>First Name</th>
            <th>Transcripts School</th>
            <th>Date Received</th>
        </tr>
    </table>
</div>
$(function() {
    // Button control
    $( "#SearchItems" )
        .button()
        .click(function() {
            SearchTranscripts();
        });
    // Dialog control
    $( "#dialog-results" ).dialog({
        autoOpen: false,
        resizable: false,
        height:300,
        width:500,
        modal: true,
        buttons: {
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }
    });
});
// Query the SharePoint list
function SearchTranscripts() {
var soapEnv = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>"
    soapEnv += "<soapenv:Body>"
    soapEnv += "<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>"
    soapEnv += "<listName>Transcripts Log</listName>"
    soapEnv += "<query><Query><Where><Or><Contains><FieldRef Name='Title' /><Value Type='Text'>Smith</Value></Contains>"
    soapEnv += "<Contains><FieldRef Name='First_Name' /><Value Type='Text'>Smith</Value></Contains></Or></Where>"
    soapEnv += "<OrderBy><FieldRef Name='Title' Ascending='True' /></OrderBy></Query></query>"
    soapEnv += "<viewFields>"
    soapEnv += "</viewFields>"
    soapEnv += "<rowLimit>5000</rowLimit>"
    soapEnv += "</GetListItems>"
    soapEnv += "</soapenv:Body>"
    soapEnv += "</soapenv:Envelope>";

    $.ajax({
        url: "/xxx/_vti_bin/lists.asmx",
        type: "POST",
        dataType: "xml",
        data: soapEnv,
        complete: processResult,
        error: errorResult,
        contentType: "text/xml; charset=\"utf-8\""
    });
}
// Add items to the list
function processResult(xData) {
    var myFname = "";
    var myLname = "";
    var mySchool = "";
    var myDate = "";
    var myID = "";
    var itemUrl = "/xxx/DispForm.aspx?ID=";
    var nr = 0;

    $(xData.responseXML).find("z\\:row").each(function () {
        myFname = $(this).attr("ows_First_Name");
        myLname = $(this).attr("ows_Title");
        mySchool = $(this).attr("ows_College");
        var tmpd = $(this).attr("ows_Date_Received");
        // Check for invalid dates
        if(!tmpd){
            myDate = "n/a";
        } else {
            myDate = tmpd.substring(5, 7).replace("0","") + "/" 
            myDate += tmpd.substring(8, 10).replace("0","") + "/" 
            myDate += tmpd.substring(0, 4);
        }
        myID = $(this).attr("ows_ID");
        // Create the new row
        var AddRow = "<tr><td><a href='" + itemUrl + myID + "'>" + myLname + "</a></td>"
            AddRow += "<td>" + myFname + "</td>"
            AddRow += "<td>" + mySchool + "</td>"
            AddRow += "<td>" + myDate + "</td></tr>"
        $("#SearchData").append(AddRow);
        nr += 1;

    });
    $("#myResults").html($("#myResults").html() + " " + nr)
    $( "#dialog-results" ).dialog( "open" );
}
// Show Error
function errorResult(xData) {
    alert(xData.responseText);
}