2013-09-24 6 views
0

Возможно, вы все знаете о проблеме, с которой GoogleChrome и Safari используют navigatetoURL. Он работает только в IE. Таким образом, я собрал следующий код с форума. Код - это место функции javascript в файле html. Тогда в Flex есть еще одна функция, которая вызывается при нажатии кнопки. Часть кода здесь:altervative to navigatetoURL в Flex 4.5 - не работает

variables.pmsg1 = xml_langue.msg1; 
variables.pmsg2 = xml_langue.msg2; 
variables.pmsg3 = xml_langue.msg3; 
variables.pmsg4 = xml_langue.msg4; 
variables.ppaytomode = parentApp.PAYTOMODE; 
var request:URLRequest = new URLRequest(dir_web); 
request.data = variables; 
request.method = "GET"; 
//navigateToURL(request,"_blank"); 
postXMLPageRequest(variables, request.toString(), '_blank'); // HERE I AM CALLING THE FLEX FUNCTION 

флекс ФУНКЦИЯ НИЖЕ:

общественная функция postXMLPageRequest (данные: Object, PAGEURL: String, окно: String = NULL): аннулируются { если (ExternalInterface & & ExternalInterface.available) ExternalInterface.call ("postXMLPageRequest", pageURL, data.encode(). ToString(), window); }

ФУНКЦИЯ JAVASCRIPT (находится в файле HTML) НИЖЕ:

функция postXMLPageRequest (URL, xmlString, цель, метод) { метод = Метод || "ПОСЛЕ"; target = target || "_blank";

<% -------------------------------------------- --------------%> <% - Создайте элемент формы с указанными атрибутами. -%> <% ------------------------------------------- ---------------%> var form = document.createElement ("form"); form.setAttribute («действие», url); form.setAttribute («метод», метод); form.setAttribute («цель», цель); form.setAttribute ("ENCTYPE", "text/plain"); form.setAttribute ("style", "display: none");

<% -------------------------------------------- ------------------------%> <% - Добавить XML-строку в качестве значения для скрытого ввода в форму. -%> <% ------------------------------------------- -------------------------%> var hiddenField = document.createElement ("input"); hiddenField.setAttribute («тип», «скрытый»); hiddenField.setAttribute ("название", «» + xmlString); form.appendChild (скрытое);

<% --------------------- --------------------%> <% - добавьте форму на тело, отправьте ее -%> <% - затем удалите форму из корпус -%> <% ---------------------------------------- -% не> document.body.appendChild (форма); form.submit(); document.body.removeChild (форма); }

Однако ничто в выполняется, когда я нажимаю кнопку, которая вызывает функцию postXMLPageRequest> CAn кто-нибудь мне поможет?

Большое спасибо.

ответ

0

Есть 3 вопроса, которые я вижу сразу.Во-первых, вы вызываете вашу функцию гибкого используя

postXMLPageRequest (переменные, request.toString(), '_blank');

Несмотря на то, что он расширяет Object, URLRequest фактически не имеет метода toString(). request.url - это правильный способ получить строку url.

Во-вторых, у вас есть синтаксическая ошибка в вашем javascript. У вас есть двойные кавычки и апостроф, а не пару цитат в

hiddenField.setAttribute («имя», «» + xmlString)

В-третьих, вы указываете в вызове метод flex, который вы хотите выполнить GET-запрос. Однако вы никогда не передаете строку типа метода в javascript. Если вы хотите, чтобы вам нужно было передать «GET» в качестве четвертого параметра вызова ExternalInterface. будет по умолчанию POST.

Надеюсь, что это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^