0

首先让我说,我以前从未使用过 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 文件吗?

对任何荒谬的问题表示歉意,这真的是我尝试学习这件事的第一天。

4

1 回答 1

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>
于 2013-03-07T00:40:59.013 回答