如何让ibook显示从在线数据库查询的数据

时间:2013-01-23 01:34:20

标签: database ibooks

我有一个ibook,我试图从我的服务器上的云中的数据库中取回一个数据表。如果我将main.html文件放在我的服务器上并使用我的Web浏览器浏览它,它就像一个冠军返回一个数据表,但是当我把这个html作为我的main.html文件放在Info.plist中时它没有在ibook中显示表格。我错过了什么?

这是我的html文件,它位于本书页面上的ibook html小部件的小部件中

<html>
<head>
<script type="text/javascript" src="http://myserver.com/ibook_widgets/jquery-1.7.2.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){

$.ajax({
  type: 'post',
  url: 'http://myserver.com/ibook_widgets/getdata.php?id=4',
  data: 'json',
  beforeSend: function() {
    // before send the request, displays a "Loading..." messaj in the element where the server response will be placed
    $('#resp').html('Loading...');
  },
  timeout: 10000,        // sets timeout for the request (10 seconds)
  error: function(xhr, status, error) { alert('Error: '+ xhr.status+ ' - '+ error); },
  success: function(response) { $('#listhere').html(response); }
});

});
</script>
</head>

<body>
<div id="listhere" style="border: solid black 1px; background-color:red;">Replace this text with html table from php file</div>
</body>
</html>

这是我的服务器上的php文件

<?php

/*
 * Following code will list all the products
 */



$dbhostname='myserver.com';
$dbusername='usr';
$dbpassword='pwd';
$dbname='mydatabase';


$con = mysql_connect($dbhostname,$dbusername,$dbpassword);
mysql_select_db($dbname, $con);


// check for post data
if (isset($_POST["id"])) 
{
$inValue = $_POST['id'];



$sql = 'select id, btn_txt from mytable where parent_id = '.$inValue.' order by btn_txt';



$result = mysql_query($sql) or die(mysql_error());
if (!empty($result)) 
{
    // check for empty result
    if (mysql_num_rows($result) > 0) 
    {

        $row = mysql_fetch_array($result);


        $btntxt = $row['btn_txt'];


            $result1 = mysql_query($sql) or die(mysql_error());
            // check for empty result
            if (!empty($result1)) 
            {
                // check for empty result
                if (mysql_num_rows($result1) > 0) 
                {
                    // looping through all results
                    // products node


                    $tmpStr =  "<table border='1'><tr><th>Tap A Row To See Details</th></tr>";

                    // show select box input_select_4
                    while($row1 = mysql_fetch_array($result1))
                    {
                        $tmpStr = $tmpStr . "<tr><th><a href=\"http://myserver.com/ibook_widgets/getdata.php?id=". $row1["id"] . "\" target=\"_self\">" . $row1["btn_txt"] . "</a></th></tr>";

                    }

                    $tmpStr = $tmpStr . "</table>";

                    echo $tmpStr;
                    // echoing JSON response
                   ///echo json_encode($tmpStr);





            mysql_close($con);



                    // echoing JSON response
                   ////echo json_encode($response);


                } 
            }

        } 
    } 
}

?>

我错过了什么?

1 个答案:

答案 0 :(得分:2)

经过数小时的研究后,它与CORS跨源资源共享

有关

我必须将以下标题行添加到我的服务器上的php文件中,然后宾果游戏才能正常工作。

<?php
header("Access-Control-Allow-Origin:  *");

有关详细信息,请参阅

中的CORS说明

http://www.html5rocks.com/en/tutorials/cors/#toc-cors-from-jquery

跨源资源共享(CORS)是一种允许来自浏览器的跨域通信的W3C规范。通过构建在XmlHttpRequest对象之上,CORS允许开发人员使用与同域请求相同的习语。

CORS的用例很简单。想象一下,网站alice.com有一些网站bob.com想要访问的数据。传统上,在浏览器的相同原始策略下不允许这种类型的请求。但是,通过支持CORS请求,alice.com可以添加一些特殊的响应标头,允许bob.com访问数据。

从这个例子中可以看出,CORS支持需要服务器和客户端之间的协调。幸运的是,如果您是客户端开发人员,那么您将免受大部分细节的影响。本文的其余部分将介绍客户端如何进行跨源请求,以及服务器如何配置自身以支持CORS。