2016-06-11 7 views
-1

AS3を使用してFlash CS6でAIRアプリケーションを構築しています。変数Idの値をPHPに送って、表示するデータと表示するデータを選択できるようにする必要があります。AS3からPHP - 「エラー#1132:無効なJSON解析入力」

Idの値を配列に入力して最高値または最低値を取得することで、表示されたデータと表示されないデータを取得する方法を見つけました。

しかし、問題は、私はPHPにデータを送信するとき、私はエラーを取得することである:ここSyntaxError: Error #1132: Invalid JSON parse input

は私のコードです:ここ

var maxId:Number = 0; 
var minId:Number = 18; 
var phpVars:URLVariables = new URLVariables(); 
var phpFileReq:URLRequest = new URLRequest("http://localhost/social_media_1/timeline.php"); 
phpFileReq.method = URLRequestMethod.POST; 
phpFileReq.data = phpVars; 
var phpLoader:URLLoader = new URLLoader(); 
phpLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 
phpVars.maxId = maxId; 
phpVars.minId = minId; 
phpLoader.load(phpFileReq); 

bg2_mc.x = 0; 
bg2_mc.y = 305; 
addChild(bg2_mc); 
timeline_mc.x = 0; 
timeline_mc.y = 305; 
addChild(timeline_mc); 
sampul_mc.x = 0; 
sampul_mc.y = 0; 
addChild(sampul_mc); 
fotoProfil_mc.x = 240; 
fotoProfil_mc.y = 85; 
addChild(fotoProfil_mc); 
navigasi_mc.x = 0; 
navigasi_mc.y = 170; 
addChild(navigasi_mc); 
tempatPost_mc.x = 0; 
tempatPost_mc.y = 230; 
addChild(tempatPost_mc); 
tempatPost_mc.btn.gotoAndStop(2); 
tombol1.x = tombol1.width/2; 
tombol1.y = tombol1.height/2; 
addChild(tombol1); 
tombol2.x = tombol2.width/2; 
tombol2.y = 100; 
addChild(tombol2); 

loadTimeline() 

function loadTimeline(){ 
    var phpFileRequest:URLRequest = new URLRequest("http://localhost/social_media_1/timeline.php?action=load_timeline"); 
    var phpLoader:URLLoader = new URLLoader(); 
    phpLoader.dataFormat = URLLoaderDataFormat.TEXT; 
    phpLoader.addEventListener(Event.COMPLETE, onCompleteLoadTimeline); 
    phpLoader.load(phpFileRequest); 
} 

function onCompleteLoadTimeline(event:Event){ 
    var result:Object = JSON.parse(event.target.data); 

    for (var i:int=0;i<=4;i++){ 
     tpostArr[i] = new t_post(); 
     var batas_mc:batas = new batas(); 

     tpostArr[i].foto.x = 52.50; 
     tpostArr[i].foto.y = 52.50; 

     tpostArr[i].nama.x = 120; 
     tpostArr[i].nama.y = 20; 

     tpostArr[i].postingan.x = 120; 
     tpostArr[i].postingan.y = 55.15; 
     tpostArr[i].postingan.wordWrap = true; 
     tpostArr[i].postingan.autoSize = TextFieldAutoSize.LEFT; 

     tpostArr[i].tombol_suka.x = 440; 
     tpostArr[i].tombol_suka.y = 73; 
     tpostArr[i].nama.text = result[i].timeline_name; 
     tpostArr[i].postingan.text = result[i].timeline_post; 
     batas_mc.x = 0; 
     batas_mc.y = tpostArr[i].postingan.y + tpostArr[i].postingan.height + 20; 
     tpostArr[i].addChild(batas_mc); 
     idPrint.push(result[i].id); 

     timeline_mc.addChild(tpostArr[i]); 
     tpostArr[i].y = yPos; 
     yPos = tpostArr[i].y+tpostArr[i].height; 
     yPos +=5; 
     maxId = Math.max.apply(null, idPrint); 
     minId = Math.min.apply(null, idPrint); 

     var phpVars:URLVariables = new URLVariables(); 
     var phpFileReq:URLRequest = new URLRequest("http://localhost/social_media_1/timeline.php"); 
     phpFileReq.method = URLRequestMethod.POST; 
     phpFileReq.data = phpVars; 

     phpVars.maxId = maxId; 
     phpVars.minId = minId; 
    } 
} 

は私のPHPコードです:

<?php 
require_once "connect.php"; 
$action = isset($_GET['action'])?$_GET['action']:''; 
$body_nama = array(); 
$body_postingan = array(); 
$total_likers = array(); 
$id = array(); 
$minId = URLDecode($_POST['minId']); 

switch($action){ 
case 'posting': 
posting(); 
break; 
case 'like': 
like(); 
break; 
case 'delet_ini': 
deletIni(); 
break; 
case 'load_timeline': 
loadTimeline(); 
break; 
case 'load_timeline_baru': 
loadTimelineBaru(); 
break; 
} 


function loadTimeline(){ 

global $minId; 

$query_offset = "SELECT COUNT(*) FROM timeline_posts WHERE id > $minId"; 
$result_offset = mysql_query($query_offset); 
$offset = mysql_result($result_offset,0); 

echo $offset; 

$jumlah = 10; 
$sqldata = mysql_query("SELECT * FROM timeline_posts ORDER BY timeline_posts.id DESC LIMIT $offset,$jumlah"); 


$rows = array(); 
while($r = mysql_fetch_assoc($sqldata)) { 
    $rows[] = $r; 
} 



echo json_encode($rows); 

} 

function loadTimelineBaru(){ 
$maxId = URLDecode($_POST['maxId']); 


$query_load = "SELECT COUNT(*) FROM timeline_posts WHERE id > '$maxId'"; 
$result_load = mysql_query($query_load); 
$jumlah = mysql_result($result_load,0); 
$sqldata = mysql_query("SELECT * FROM timeline_posts ORDER BY timeline_posts.id ASC LIMIT '$jumlah'"); 

$rows = array(); 
while($r = mysql_fetch_assoc($sqldata)) { 
    $rows[] = $r; 
} 

echo json_encode($rows); 
} 
?> 
+0

はフィドラーのようなツールに要求を見てみてください...それが助けかどうかを確認&以下のようにコードを設定してみてくださいあなたのPHPコードがあなたのswfに送信しているものを正確に見てください。明らかに、AS3 jsonパーサはPHPコードの出力を無効として読み込んでいますが、実際のJSONを調べてその理由を調べる必要があります。 – Brian

+0

さて、私は、変数minIdの値を送信するときに間違いがあると思います。なぜなら私はPHPで値のminIdを設定して正しく動作しようとしているからです。 –

+0

実際にエラーを引き起こすのはどのラインですか? – Brian

答えて

0

JSONエラーを修正できるかどうかわかりませんが、phpVars(maxId &分)を定義しています。はすでにPOSTを使用して送信しています。更新するには遅すぎる(例:phpVars.maxId = maxId;)...送信後

var phpVars:URLVariables = new URLVariables(); 
phpVars.maxId = maxId; 
phpVars.minId = minId; 

var phpFileReq:URLRequest = new URLRequest("http://localhost/social_media_1/timeline.php"); 
phpFileReq.data = phpVars; //# assign some data to this request 
phpFileReq.method = URLRequestMethod.POST; //# now post (send) the data 
+0

'phpLoader.load(phpFileReq);'という行までリクエストはサーバに送られません... – Brian