成功将json_encode'd变量从PHP传递到外部.js文件?

时间:2013-03-07 00:16:48

标签: php jquery ajax json

首先让我说,我之前从未使用过JSON或AJAX,但我认为我至少理解这个概念。

我只是尝试将一些PHP值传递给jquery函数(位于外部.js文件中)。我已经尝试了所有我能想到的东西,并且不知道这里出了什么问题。

在index.php中我有:

<?php
$data = array(1 => 'thisor', 2 => 'thatttt');
echo json_encode($data);
?>

..这显然不是我想传递的真实数据,但它只是用于测试。 在我的.js文件中,我有以下功能:

  $.getJSON("index.php", function(data){
     alert('data loaded' + data);
  })
  .error(function() { alert("error"); });

每次都会抛出错误。但是我注意到如果我使用$ .post后跟相同的确切代码,它不再抛出错误,并返回数据。

另外,是否有必要'回显'json_encode?如果我不希望在我的网页上显示此信息,该怎么办?或者......我在这里误解了一些东西。

另外x2,如果值得注意,我读到了'header('Content-type:application / json');'可能需要进入PHP文件..但是当我这样做时,它不再在浏览器中呈现网页,而只是以纯文本格式输出内容。我是否需要在其他地方执行此操作/创建另一个外部PHP文件?

对于任何荒谬的问题道歉,这是我尝试学习这件事的第一天。

1 个答案:

答案 0 :(得分:1)

对我来说很好。你确定唯一的东西输出是jon字符串吗? index.php文件中还有其他内容吗?

使用$ .post时,请尝试将警报更改为:

 alert('data loaded(' + JSON.stringify(data)+')');

并检查所有你看到的是json字符串。

既然你已经说过index.php文件也在输出其他东西,这里有一个你可以做的例子(我不是说这是一个好习惯)。所以你可以编写类似这样的index.php文件:

<?php
if(isset($_GET['ajax'])) {
  $data = array(1 => 'thisor', 2 => 'thatttt');
  echo json_encode($data);
  exit;
  }
?>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js">
</script>
<script type="text/javascript">
<!--
$.post("index.php?ajax", function(data){
     alert('data loaded(' + JSON.stringify(data)+')');
  })
  .error(function() { alert("error"); });
// -->
</script>