Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Вопрос по взаимодействию с php скриптом
Flash Zone Forum > Macromedia Flash > ActionScript
dlj
Здравствуйте!
Помогите пожалуйста разобраться со счётчиком файлов в папке. (AS3). Тестовый документ с AS3 кодом и одной кнопкой send_btn. При нажатии на эту кнопку, флеш обращается к скрипту counter.php и отправляет в него путь к папке, в которой необходимо посчитать файлы. Подскажите как из этого скрипта потом вывести результаты подсчёта в переменную all
AS3:
Код
var path:String = "images/test/";
var all:uint;
send_btn.addEventListener(MouseEvent.CLICK, counter);

var var_load:URLLoader = new URLLoader;
//переменную URL_request связываем с файлом counter.php
var URL_request:URLRequest = new URLRequest( "counter.php" );
//метод передачи данных - POST
URL_request.method = URLRequestMethod.POST;

//если нажата кнопка send_btn
function counter(e:MouseEvent):void {
    //формируем строку, которая будет отправлена
    var count_data:String = "path=" + path;
    var URL_vars:URLVariables = new URLVariables(count_data);
    URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
    URL_request.data = URL_vars;
    var_load.load( URL_request );
}


PHP:
Код
<?php
$dirPath = $_POST['path'];
$items = scandir($dirPath);
$cnt = 0;
foreach ($items as $item)
    if (is_file($item))
      $cnt ++;
?>
HaWK
В PHP выведи с помощью echo переменную в формате FlashVars:
Код
echo "cnt=" . $cnt;


Дальше:
Код
var_load.dataFormat = URLLoaderDataFormat.VARIABLES;


Ну и слушатель надо бы повесить, чтобы обработать ответ:
Код
var_load.addEventListener(Event.COMPLETE, completeHandler);

Код
function completeHandler(e:Event):void {
    all = e.target.data.cnt;
}


И лучше наверное у пер-ой all тип на int поменять.
dlj
Разобрался, вот как всё должно выглядеть:
AS3:
Код
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.events.Event;

var all:int;
var variables:URLVariables = new URLVariables("path=images/test/");
var request:URLRequest = new URLRequest();
request.url = "counter.php";
request.method = URLRequestMethod.POST;
request.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandler);
try{
    loader.load(request);
}
catch(error:Error){
    trace("Unable to load URL");
}

function completeHandler(event:Event):void{
    trace(event.target.data.cnt);
    all = event.target.data.cnt;
    all_txt.text = all.toString();
}

PHP:
Код
<?php
$dirPath = $_POST['path'];
$items = glob($dirPath."*");
$cnt = count($items);
echo "cnt=" . $cnt;
?>
Русская версия IP.Board © 2001-2013 IPS, Inc.