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);
}
?>
はフィドラーのようなツールに要求を見てみてください...それが助けかどうかを確認&以下のようにコードを設定してみてくださいあなたのPHPコードがあなたのswfに送信しているものを正確に見てください。明らかに、AS3 jsonパーサはPHPコードの出力を無効として読み込んでいますが、実際のJSONを調べてその理由を調べる必要があります。 – Brian
さて、私は、変数minIdの値を送信するときに間違いがあると思います。なぜなら私はPHPで値のminIdを設定して正しく動作しようとしているからです。 –
実際にエラーを引き起こすのはどのラインですか? – Brian