首先让我说,我之前从未使用过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文件?
对于任何荒谬的问题道歉,这是我尝试学习这件事的第一天。
答案 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>