如何使用JSONP在cordova应用程序上显示PHP生成的页面?

时间:2014-08-06 13:12:58

标签: javascript php ajax cordova jsonp

我正在尝试做的基础在mySQL中存储路径然后在服务器上存储图像。然后使用下面的PHP代码将它们加载到屏幕上并使用按钮移动它们。这在浏览器上很好。然而,这些操作实际上将在不接受PHP的cordova应用程序上完成,我无法使用HTTP请求来执行我的功能。任何人都可以帮我转换我的代码并显示我的图像。我认为最好的选择是使用JSONP或AJAX和JSONP的组合。

以下是我尝试使用HTTP请求显示的PHP端代码。

<!DOCTYPE html>

<html>
<?php
include("mysqlconnect.php");

$select_query = "SELECT `ImagesPath` FROM `offerstbl` ORDER by `ImagesId` DESC";
$sql = mysql_query($select_query) or die(mysql_error());   
$data = array();
while($row = mysql_fetch_array($sql,MYSQL_BOTH)){
$data[] = $row['ImagesPath'];
}

$images = json_encode($data);

?>

<script> 

var images = <?php echo $images; ?>
alert(images[1]);


var index = 0;

function buildImage() {
var img = document.createElement('img')
img.src = images[index];
document.getElementById('content').appendChild(img);
}

function changeImage(){
var img = document.getElementById('content').getElementsByTagName('img')[0]
index++;
index = index % images.length; // This is for if this is the last image then goto first image
img.src = images[index];
}
</script>




<body onload="buildImage();">
<div class="contents" id="content"></div>
<button onclick="changeImage()">NextImage</button>

</body>
</html>

这是我用来显示PHP代码的cordova中的HTML代码。但是我的JavaScript函数都不起作用。我认为它需要JSONP的元素。

<!DOCTYPE html>
<html>
<head>

<script>
function showUser(str) {
    if (str=="") {
        document.getElementById("phpFile").innerHTML="";
        return;
    }
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("content").innerHTML=xmlhttp.responseText;
        }
    }

    xmlhttp.open("GET","http:server/content.php?");
    xmlhttp.send();

}


</head>

<body onload="showUser()">

<div class="contents" id="phpFile">


</body>
</html>

1 个答案:

答案 0 :(得分:0)

由于您运行的是应用而非实际的浏览器,因此不适用相同的域策略。

我必须在config.xml内部指定我想通过该应用访问的任何网址。

<widget xmlns = "http://www.w3.org/ns/widgets" id = "io.something.something" version = "1.6">
     <access origin="http://127.0.0.1*"/> <!-- allow local pages -->
     <access origin="https://mydomain.com" subdomains="true" />
</widget>

http://cordova.apache.org/docs/en/3.1.0/guide_appdev_whitelist_index.md.html