我有一个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);
}
}
}
}
}
?>
我错过了什么?
答案 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。