Javascript PhoneGap和PrestaShop web服务

Javascript PhoneGap和PrestaShop web服务,javascript,android,xml,cordova,prestashop,Javascript,Android,Xml,Cordova,Prestashop,我想从我的PrestaShop网站的web服务(返回XML)中检索数据。我使用PhoneGap Android。 我尝试了这段代码,它在Internet Explorer上给了我一个很好的结果,但在我的PhoneGap应用程序上没有 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="h

我想从我的PrestaShop网站的web服务(返回XML)中检索数据。我使用PhoneGap Android。 我尝试了这段代码,它在Internet Explorer上给了我一个很好的结果,但在我的PhoneGap应用程序上没有

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
           <title>PhoneGap</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
   <script type="text/javascript" charset="utf-8" src="js/Config/phonegap-0.9.3.js"></script>

   <link rel="stylesheet" href="css/jquery/jquery.mobile-1.0a1.min.css" />
   <link rel="stylesheet" href="css/Style.css" />
   <script src="js/Config/jquery-1.4.3.min.js"></script>
   <script src="js/Config/jquery.mobile-1.0a1.min.js"></script>
<script type="text/javascript">
function getDescription() {
var url = 'http://localhost/prestashop/api/customers/2';
req = new XMLHttpRequest();
req.onreadystatechange = processRequest;
req.open("GET", url, true);
req.send(null);
}
function processRequest() {
if (req.readyState == 4) {
if (req.status == 200) {
alert ( "Not able to retrieve description+"+req.responseText );
parseMessages();
} else   {
alert ( "Not able to retrieve description+"+req.responseText+"vide" );
}
}
}
function parseMessages() {
response  = req.responseXML.documentElement;
itemDescription = response.getElementsByTagName('lastname')[0].firstChild.data;
alert ( itemDescription );
}
</script>

</head>
<body>
<button onClick="getDescription()">Ajax call</button>
</body>
</html>

音差
函数getDescription(){
var url='1〕http://localhost/prestashop/api/customers/2';
req=新的XMLHttpRequest();
req.onreadystatechange=processRequest;
请求打开(“获取”,url,true);
请求发送(空);
}
函数processRequest(){
如果(req.readyState==4){
如果(请求状态==200){
警报(“无法检索描述+”+req.responseText);
解析消息();
}否则{
警报(“无法检索描述+”+req.responseText+“vide”);
}
}
}
函数parseMessages(){
response=req.responseXML.documentElement;
itemDescription=response.getElementsByTagName('lastname')[0].firstChild.data;
警报(项目描述);
}
Ajax调用
我也尝试过这个代码,但我面临同样的问题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
       <title>PhoneGap</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
   <script type="text/javascript" charset="utf-8" src="js/Config/phonegap-0.9.3.js"></script>


   <link rel="stylesheet" href="css/jquery/jquery.mobile-1.0a1.min.css" />
   <link rel="stylesheet" href="css/Style.css" />
   <script src="js/Config/jquery-1.4.3.min.js"></script>
   <script src="js/Config/jquery.mobile-1.0a1.min.js"></script>
      <script src="jquery.form.js"></script>


<script type="text/javascript">
$(document).ready(function()
{
$.ajax({
type: "GET",
url: "http://localhost/prestashop/api/customers/2",
//dataType: "xml",
success: parseXml
});

function parseXml(xml) {alert("a");
  $(xml).find("customer").each(function()  {alert("b");

        $("#dropdownlist").append("<hr>"+$(this).find("lastname")[0].firstChild.data+"<hr>");
      });
}

});
</script>  
</head>

<body>  
<div id="dropdownlist" />
</body>  
</html>

音差
$(文档).ready(函数()
{
$.ajax({
键入:“获取”,
url:“http://localhost/prestashop/api/customers/2",
//数据类型:“xml”,
成功:parseXml
});
函数parseXml(xml){alert(“a”);
$(xml).find(“customer”).each(function(){alert(“b”);
$(“#dropdownlist”).append(“
”++$(this.find(“lastname”)[0].firstChild.data+”
”); }); } });
可能是因为您没有授权访问外部主机

您是否在
/res/xml/PhoneGap.xml

<?xml version="1.0" encoding="utf-8"?>
<phonegap>
    <access origin="*"/>
    <log level="DEBUG"/>
</phonegap>

您正陷入一个熟悉的文件协议XHR问题。该行:

if (req.status == 200) {
应改写为:

if (req.status == 200 || req.status == 0) {

从文件执行XHR时,状态通常报告为0://。将其视为200状态是完全可以的。

我使用以下代码片段作为我的请求,它工作正常,希望能有所帮助。 您可以引用链接:,并向xhr调用添加所需的属性

x$.data = {};
        x$("#YOUR_HTML_ELEMENT_ID").xhr("YOUR_URL",
        { 
            callback: function(){
            XMLresponse =  this.responseText; 
            alert("RESULT:"+XMLresponse )
        },
            error:function(){
               alert("ANY ERROR HANDLE HERE");
            }
        }
        );

在您的\u PHONEGAP\u项目/res/xml/PHONEGAP.xml中,我发现*“/>我已将其替换为,因为我在项目中不在本地工作,但也不工作!!!!谢谢你的回复,但问题仍然存在!!这段代码在InternetExplorer上给了我一个很好的结果,但在我的PhoneGap上或者在Mozilla@Aminesrine:无法共享我的全部代码,因此我在回答中为您提供了参考链接,请尝试用您自己的受尊重的值替换所有提到的“您的”变量,您尝试过这样做吗?
x$.data = {};
        x$("#YOUR_HTML_ELEMENT_ID").xhr("YOUR_URL",
        { 
            callback: function(){
            XMLresponse =  this.responseText; 
            alert("RESULT:"+XMLresponse )
        },
            error:function(){
               alert("ANY ERROR HANDLE HERE");
            }
        }
        );