【问题标题】:AJAX to Sharepoint Server with Phonegap and JQuery Mobile not workingAJAX 到带有 Phonegap 和 JQuery Mobile 的 Sharepoint 服务器不工作
【发布时间】:2012-03-17 23:30:24
【问题描述】:

我有以下问题。在 Phonegap 应用程序(适用于 Android)中,我想使用以下代码进行 AJAX-Call 以连接 Sharepoint 服务器:

 $.ajax({  
   url:"https://xxx/_vti_bin/lists.asmx",

   beforeSend: function( xhr ){
    xhr.setRequestHeader(
    "SOAPAction",
    "http://schemas.microsoft.com/sharepoint/soap/GetListCollection"
    );
    xhr.setRequestHeader("Content-Type","text/xml; charset=utf-8");
    }, 
   dataType:"xml",  
   contentType: "application/xml; charset=utf-8", 
   timeout:10000,  
   type:'POST', 
   cache: false,
   username: "username",
   password: "password",
   data: soapEnv,
   success:function(data) {
       // alert data
       var serializer = new XMLSerializer();
        serialized = serializer.serializeToString(data);
       alert(serialized);
   },  
   error:function(XMLHttpRequest,textStatus, errorThrown) {   
       // alert errors
     alert("Error status :"+textStatus);  
     alert("Error type :"+errorThrown);  
     alert("Error message :"+XMLHttpRequest.responseXML); 
     alert("Error statustext :"+XMLHttpRequest.statusText); 
     alert("Error request status :"+XMLHttpRequest.status); 
   }, 
   complete: function(jqXHR, textStatus){
       alert(textStatus);
   }
    });

当我尝试在 Android 模拟器上运行它时,错误消息是:

Error status: error   
Error type: 
Error message: undefined
Error statustext: error
Error request status: 0

但是,当我尝试在禁用网络安全的浏览器 (Chrome) 上运行它时(因为同源策略),它一切正常。由于 file:/// 协议,Phonegap 通常不应该关心 SOP。我在“mobileinit”中添加了以下内容:

$(document).bind("mobileinit", function() {
            $.support.cors = true;
            $.mobile.allowCrossDomainPages = true;
        });

但是当我在没有禁用网络安全的情况下在 Chrome 中运行相同的代码时,我得到的错误与在 Android 模拟器中完全相同。

我还尝试了对 wikipedia 的 AJAX 调用(使用 html 而不是 xml,使用 GET 而不是 POST),并且没有问题。

另外我认为 AJAX 到 Sharepoint 甚至不会被触发(如果我设法以正确的方式配置它,Fiddler2 中没有流量)

所以我真的被这个问题困扰了两天,如果有人知道如何让这个 ajax 调用工作,那会让我很高兴:-)

(soapEnv 是 XML 信封,发送到服务器)

【问题讨论】:

  • 嗨,你能解决这个问题吗?希望您能分享您的解决方案。

标签: android sharepoint jquery cordova https


【解决方案1】:

嗯,我知道曾几何时 jQuery 有一个错误,它将请求状态 0 视为错误。从文件协议运行时,状态 0 与 200(OK)相同。您可能需要更新您的 jQuery 版本。

或者,为了测试我的理论,只需向您的服务发出一个普通的 XHR 请求,看看它是否有效。这是我的股票示例:

http://simonmacdonald.blogspot.com/2011/12/on-third-day-of-phonegapping-getting.html

【讨论】:

  • 好的,谢谢。我已经有了 JQuery 1.7 版。但我也会尝试这个简单的 XHR 请求 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多