1

好的,问题就在这里。我有以下 PHP 代码。

    <?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

我从W3Schools上下来,在数据库所在的服务器上工作正常。但是,我想做的是使用以下 Javascript 在另一个站点上显示它。

    function displaydata()
{
var xmlhttp;
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("datalist").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","phpscripthere.com/myphp.php",true);
xmlhttp.send();
}

上面的 javascript 有效,但仅当它位于数据库所在的服务器上时。我需要的是让 Javascript 在另一个位置工作,而 PHP 仍然可以存储在主服务器上。

4

4 回答 4

4

请不要将此标记为答案,因为它不是。

但这是相当的建议。

这是 w3Schools 病毒传播....

$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

在此脚本中,即使连接失败,处理也会继续

您应该像这样合并更多的故障检查并退出它们:

if (mysqli_connect_errno())
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   exit(0);
}

你也不知道有没有

$result = mysqli_query($con,"SELECT * FROM Persons");

查询成功。

除了这些陷阱

您应该更好地为页面收集数据并将其编码为 JSON 并发送到客户端。如下所示:

$r = array();
while(true){
    $row = mysqli_fetch_array($result);
    if(!$row)break;
    $r[] = json_encode((object)$row);
}
echo json_encode($r);

forming [  {"firstName":"John", "lastName": "Smith"}, 
           {"firstName":"Abraham", "lastName":"Lincoln"}, ...etc ]

then upon receiving decode the data in js and inject to your page.

当然,使用 ajax 跨域请求(不太安全)或让您的服务器与其他服务器通信(更安全)来解决您的问题。

于 2013-04-03T07:47:17.130 回答
3

您需要进行跨域请求https://stackoverflow.com/search?q=javascript+cross+domain(其中一些是AJAX 跨域调用

于 2013-04-03T07:42:19.893 回答
2

尝试使用具有跨域 true 的 $.ajax 发出请求,如下所示:

$.ajax({
type: "GET",
crossDomain:true,
url: "phpscripthere.com/myphp.php"
});
于 2013-04-03T07:45:46.370 回答
1

如果你从 W3Schools 学习这些东西,听起来可能有点复杂,但不要气馁 :)

无论如何,就像@LoneWOLFs 在评论中所说的那样,您可能还可以在您的 JavaScript 来自的同一服务器上设置另一个 PHP 页面,并在另一个远程服务器上调用该页面。

基本上,您的新 PHP 脚本将执行与旧脚本类似的操作 - 从某个远程位置调用一些数据。然后它将这些数据传回调用它的浏览器。

于 2013-04-03T07:48:38.637 回答