【问题标题】:Get value from remote php server in javascript在 javascript 中从远程 php 服务器获取值
【发布时间】:2013-01-31 14:24:23
【问题描述】:

我有两个站点,站点 A 只是 html 和 javascript,站点 B 有 php。我需要的是从站点 A 中的站点 B 获取变量。

前:

站点 A 是这样的

<html>
<head>
  <script>
  //this script has to get the values from siteB
  </script>
</head>
<body>
  <div><!-- here i will do something with the data of site B --></div>
</body>
</html>

站点 b 是这样的:

<?php
  var1= "something";
  var2= "somethingElse";
?>

我正在考虑使用 JSON 或 Ajax,但我不明白具体如何。

【问题讨论】:

  • 好的,感谢所有回答的人。对不起,如果它是重复的,我似乎无法让自己理解堆栈溢出搜索引擎。我设法用 ajax 做我需要的事情。

标签: php javascript ajax json


【解决方案1】:
$(document).ready(function() {
  $.ajax({
   type: "GET",
   url: "filename.html",
   dataType: "json",
   success: function(data) {
        // data will contain var1 and var2
   },
   error: function(data) {
        alert("Problem - perhaps malformed JSON?");
   }
  });
});

并将您的 PHP 文件更改为:

{
   "var1" : "something",
   "var2" : "somethingElse"
}

确认可以工作。 确保您的文件是格式正确的 JSON,否则不会触发“成功”。

注意 - 我在这里暗示使用 JQuery。您的 HTML 文件应包括:

<script type="txt/javascript" src="jquery-1.8b1.js"></script>

【讨论】:

  • 远程服务器。这将打破同源政策。好吧,如果 PHP 没有抛出 500 错误,它会。那是一段 JSON,而不是 PHP。哦,它还没走到那一步就坏了,$ 是未定义的。
【解决方案2】:

文件 B

<?php

$array[var1] = 'Something';
$array[var2] = 'else';

echo json_encode( $array );

文件 A (jQuery)

$.getJSON( $( 'file.php', function( data ) {

    $( 'div' ).html( data.var1 + ' ' + data.var2 );

}

已编辑——如前所述,如果不采取其他措施,就无法跨域。

【讨论】:

    【解决方案3】:

    出于安全原因,Javascript 不能使用 ajax 跨站点。实现这一点的唯一方法是在站点 A 上只有一个可以重定向的 php 文件。

    <?php echo file_get_contents($_GET["url"]); ?>
    

    并且javascript可以调用url:

    /redir.php?url=http://siteb.com/valuetoget.php
    

    我不知道在调用网站上没有 php 的情况下可以做到这一点。

    【讨论】:

    • several ways around the same origin policy 但 HTTP 重定向不是其中之一。
    • 编辑后,PHP 现在执行的是代理而不是重定向,它无法设置合适的内容类型标头,并且它不提供安全性,因此它使服务器成为垃圾邮件发送者的理想中继和其他恶意用户。
    • 这个方法在哪里无效? JS调用同一个站点的php文件还是从另一个服务器检索数据的php文件?
    • 没错,我想你需要在那里实现某种安全性。
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多