XDS AJAX файл загрузки - PullRequest
       1

XDS AJAX файл загрузки

1 голос
/ 20 июля 2011

в надежде, что кто-нибудь сможет помочь с этим ...

Я создаю веб-сервис для использования во многих местах.

www.mywebservice.dev и www.mysite.dev настроены на моем локальном компьютере, чтобы копировать реальные вещи в дикой природе ...

Я использую метод динамического тега сценария, чтобы я мог опубликовать форму, включающую загрузку файла на второй сервер.

Страница

на www.mysite.com выполняет вызов www.mywebservice.dev (на данный момент он просто повторяет вызов file_get_contents).

веб-сервис возвращает

<script script type="text/javascript">
$(function(){
    var $scrpt = $('<script><\/script>');
    $scrpt
        .attr('type' , 'text/javascript')
        .attr('src','http://www.mywebservice.dev/_assets/script/processEvent.js');
$('head').append($scrpt);

});
</script>
<form id=£event-form" ... >
.......
</form>

, который вводится на страницу без жалоб ...

Внутри processEvent.js есть еще один вызов, включающий плагин jquery.form (такой же, как приведенный выше, но, очевидно, другой файл) и вызов ajax:

$('#event-form').bind('submit',function(){
    $(this).ajaxSubmit({
        url     : 'http://www.nmssys.dev/webservices.php',
        type    : 'POST' ,
        data    : { ajax : 'true' , webservice : 'processEvent' } ,
        success : function( response ){
                      consloe.log( ' WOOHOO ' , response );
                  },
        error   : function( jqXHR , textStatus , errorThrown ){
                      console.log( ' BORKED ' , jqXHR , textStatus , errorThrown );
                  }
    });
    return false;
});

Пока все хорошо ...

Теперь, когда отправка запущена, я получаю странные результаты.

В соответствии с документами jquery.form автоматически создаст iframe для размещения загружаемого файла. При отправке я получаю следующую информацию от firebug ...

Консоль

[jquery.form] state = uninitialized
[jquery.form] cannot access response document: Error: Permission denied to access property 'document'
[jquery.form] aborting upload... aborted
BORKED Object { aborted=1, status=0, more...} aborted server abort
[jquery.form] state = interactive

ОДНАКО ...

В сетевой вкладке под записью для запроса, как и ожидалось, ответом является JSONObj с подробностями отправленного сообщения ...

Любая помощь в правильной настройке этого чуда была бы БОЛЬШОЙ.

Обнимаю и целую всех.

Ответы [ 3 ]

1 голос
/ 25 июля 2011

Решением для возврата данных ответа на родительскую страницу было использование jquery postmessage плагин

0 голосов
/ 22 июля 2011

Документы говорят, что если вы используете iframetarget, то он не пытается обработать ответ.Было бы неплохо все-таки сделать это.

0 голосов
/ 21 июля 2011

ОК, я прогрессировал !!!!

Я боролся с опцией iframetarget, которая позволяет управлять ответом на загрузку файлов. Браузер открывал новую вкладку, доставляя вывод в указанный iframe.

Решение ... динамически создать iframe и добавить его в тело ...

$('<iframe name="iframeUploader"/>')
    .prependTo('body')
    .attr({'id': 'responseTarget'})
    .css({'width':'1px','height':'1px','position':'absolute','left':'-9999px','top': '-9999px'});

и измените отправку следующим образом:

$('#nms-event-form').live('submit',function(){
    $(this).ajaxSubmit({
        url          : 'http://www.mywebservice.dev/webservices.php' ,
        type         : 'POST' ,
        dataType     : 'xml' ,
        data         : { ajax : 'true' , webservice : 'processEvent' } ,
        success      : function( response , status ){
                           consloe.log( ' WOOHOO ' , response );
                       } ,
        error        : function( jqXHR , textStatus , errorThrown ){
                           console.log( ' BORKED ' , jqXHR , textStatus , errorThrown );
                       } ,
        complete     : function(){
                           console.log($('#responseTarget').html());
                       } ,
        iframeTarget : '#responseTarget'
    });
    return false;
});

CSS просто предотвращает вспышку видимости при изменении содержимого iframe.

Это доставляет ответ от удаленного сервера, и пока все выглядит так, как будто все данные и файлы переданы.

В Firebug я теперь получаю:

[jquery.form] state = complete

И данные ответа можно увидеть в iframe ...

Я добавил полную опцию в ajaxSubmit, но пока она не запускается (хотя я получаю в консоли состояние = complete mssg), но я перейду и сообщу, когда получу ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...