2011-09-15 16 views
2

JSONオブジェクトを生成するPHPページがあります。 そして、私はそのオブジェクトへのアクセスを望むjqueryライブラリを使用するページを持っています。 しかし、それは動作しません。私は 'inside_ok'の代わりに 'inside_nk'というメッセージを見る。どうして? できるだけコードを単純化しようとしました。なぜこの単純なJSONエンコーディングは機能しませんか?

prueba.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/prueba.js"></script> 
</head> 
<body> 
</body> 
</html> 

pruebaのPHP

<?php 
header('Content-type: application/json; charset=utf-8'); 

class c1 { 
    var $i = 0; 
    var $e = 1; 
    function c1() {} 
} 

$inst_c1 = new c1(); 

echo json_encode($inst_c1); 
?> 

prueba.js

$(document).ready(function() { 
alert('begin'); 
$.ajax({ 
    url: 'http://[myserver]/prueba.php', 
    dataType: 'json', 
    data: '', 
    success: function (data) { alert('inside_ok'); }, 
    error: function (data) { alert('inside_nk'); }, 
}); 
alert('end'); 
}); 

注:私は"url: 'http://[myserver]/prueba.php?callback=?',"で試してみました と

"dataType: 'jsonp'". 
http://[myserver]/prueba.php 

作品。私は火かき棒でチェックした。

+1

答えです。 http://en.wikipedia.org/wiki/Same_origin_policy 私は別の方法でそれを行う必要があります。 –

答えて

0

あなたがjson_encodeを使用するつもりなら、私はarray()ではなく、オブジェクトにそれを使用する方が良いだろうと思う:

$out = array("i" => 0, "e" => 1); 
echo json_encode($out); 
+1

オブジェクトは正しくエンコードされています:http://codepad.viper-7.com/1LzvhU – bstakes

+0

オブジェクトをエンコードするのが完全に失敗するわけではなく、 'array()'で使う方が良いと言いました。私の反応を注意深く読んでください。 – nkcmr

0

それはあなたの関数が同じことという名前されているとは何かを持っていますそのクラスの中で、またはあなたはアクセスするクラスを指定していませんか?通常は、このような何かをする必要があります:

// PHP 5.3 
class classy{ 

    function classyfn(){ 

    } 
} 
$inst_c1 = new classy.classyfn(); 

おそらく、あなたの$ inst_c1は、それが呼び出しているか、どこの機能を見つけるために知ってないとと混同されますか?

json_encodeを取り出すと、エコーだけで何かが出力されるのですか?そうでなければ、それは同じクラスとfnの名前で問題になることを指摘します。

0

私はそのブラウザの問題だと思います。私はFirefox 7.01とそのうまく動作します。

PHP(5.3.4)スクリプトから得られる出力は、これは、それがどんな問題があってはならないので、有効なJSONで

{"i":0,"e":1} 

です。

関連する問題