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を「エコー」する必要がありますか?この情報を自分のWebページに表示したくない場合はどうすればよいですか?または..私はおそらくここで何かを誤解しています。

また、x2、注目に値する場合は、'header(' Content-type:application / json');'について読みました。PHPファイルに入れる必要があるかもしれません。しかし、そうすると、ブラウザでWebページがレンダリングされなくなり、代わりにコンテンツがプレーンテキストで出力されます。これをどこか別の場所で行う必要がありますか/別の外部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 に答える