Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Фукнция не принимает переменную. (http://www.flasher.ru/forum/showthread.php?t=202874)

firefedot 16.08.2013 14:29

Фукнция не принимает переменную.
 
Доброе...
Подскажите пожалуйста.
Есть функция, которая на сайте без перегрузки страницы обновляет часть контента. Вот она:
Код AS3:

function onClick(event:MouseEvent):void{
        switch (event.target.name)
        {
                case 'mc':
                        inJS('one.php');
                break;
                case 'mc1':
                        inJS('two.php');
                break;
                case 'mc2':
                        inJS('three.php');
                break;
                case 'mc3':
                        inJS('four.php');
                break;
        }
 
 
}
 
function inJS(path:String):void
{
        if (ExternalInterface.available)
        {
                ExternalInterface.call('reload_f' , path);
        }
}

Все работает, но сейчас нужно поставить вместо конкретных значений переменную.

Вот так:

Код AS3:

function ClickLink(event:MouseEvent):void{
 
        for (var m:int=0; m<5; m++){
                if (m==i){
                        trace("При i  равным: "+i+", ссылка по счету: "+m);
                        trace("Ссылка равна: "+link[m]);
                        var str:String=link[m];
                        trace(str);
                        inJS(str);
                }
        }
}

трайс все выдает как и есть, берется значение из массива и в строку его перевожу.
Когда проверяю на сайте, то первый вариант, где inJS('four.php'); - работает, а inJS(str); - в нужном месте засовывавет всю страницу полностью и не обновленную, как будто не воспринял текстовую переменную.
Меняю inJS(str); на inJS('one.php'); все отлично работает...
Что может быть?
На всякий случай рабочий код на JS:
Код:

function reload_f(url_id)
    { 
            $.ajax({
                url: url_id,
                type: "POST",
                context: document.body,
                dataType: "html"
             
            }).done(function(data) {

                    $("#maintext").html(data);
                 
                });

    };

Спасибо.

maincode 16.08.2013 14:48

Видимо не проходит условие
Код AS3:

if (m==i){


firefedot 16.08.2013 14:51

проходит, все работает, говорю, когда заменяю переменную на текст, все отлично работает, а когда стоит переменная, то сайт клонируется)
и трейсы проходят....

Добавлено через 1 час 14 минут
Вписывая ExternalInterface.call("reload_f" , "one.php"); в
Код AS3:

function ClickLink(event:MouseEvent):void{
 
        for (var m:int=0; m<5; m++){
                if (m==i){
                        trace("При i  равным: "+i+", ссылка по счету: "+m);
                        trace("Ссылка равна: "+link[m]);
                        var str:String=link[m];
                        trace(str);
                        ExternalInterface.call("reload_f" , "one.php");
                }
        }
}

получаю нужный результат, стоить поменять ExternalInterface.call("reload_f" , str); - все, не работает в браузере. Хотя повторюсь, трейсы все выводят.. может не правильно перевожу из массива?
Данные изначально беру из xml, может сразу их стрингами сделать?)

AlexLucas 16.08.2013 16:37

У вас str типа String, т.е. оно полюбому кастует путь к строке и в функцию всё удачно приходит.
Может вы что-то недоглядели - либо i не так задаётся, либо link[m] выдаёт не то, либо банально опечатка при заведении массива link итд итп.

firefedot 16.08.2013 17:26

проверил все ... все нормально ... трейсы все кажут как надо ... даже
Код AS3:

trace(String(link[m]) is String); // true
 
                        inJS(String(link[m]));//  на странице все равно хрень

и даже инспектор в браузере показывает. что обращение к не существующему. хотя все есть ... пробовал даже полный путь прописывать... без толку)

bifidokk 17.08.2013 09:10

ну так раз инспектор показывает, значит копайте оттуда
или приводите ваш код полностью, где i, где массив link?

firefedot 17.08.2013 11:54

функция где линк берет данные из массива, который берет данные из xml

Код AS3:

var link;
function onComplete(event:Event):void {
MyXML = XML(loader.data);
 trace(MyXML);
var u:int;
u=MyXML.imgs.img.length();
trace(u);
 
var arLink:Array = new Array(u);
for (var b:int=0; b<u; b++) {       
        arLink[b]=MyXML.links.linkt[b];       
}
 
link=arLink;
trace("LINK "+link[0]);
 
}

Дальше идет запуск таймера, где просто i увеличивается на единицу.
Все в принципе.

Добавлено через 3 часа 24 минуты
Пока сделал через одно место...
Код AS3:

sse="news"+i+".php";
inJS(sse);

то есть обязал создавать только такого типа файлы новостей. а не произвольного. не удобно ... но так работает.
А по проблеме - смотрел везде, даже в самом начале определения массива принулдительно все в стринг гнал. все равно на выходе нульОбъект.


Часовой пояс GMT +4, время: 12:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.