2013-06-08 3 views
1

Я пытаюсь отправить файл с ajax $.post.

var json_data = update_json_({name:first_name+' '+last_name,email:email,email2:email2,tele:tele,message:message,cc:$("#cc<?php echo $rand; ?>").val(),scauth:'<?php echo $auth_code; ?>'});  
$.post 
(
    '<?php echo PATH_TO_PROCESSING_SCRIPT; ?>?r=<?php echo $rand; ?>&nocache=' + Math.floor(Math.random()*1000), json_data, 
    function(data) 
    { 
     // place the returned data in the results div 
     $("#results<?php echo $rand; ?>").html(data); 
     // div#response is returned by send.php. if the submission was successful, div#response will have the class ui-state-highlight. otherwise, the submission failed. Hide the form on success. 
     if($("#response").hasClass('ui-state-highlight')) 
     { 
      $('#c-form<?php echo $rand; ?>').hide('slow'); 
     } 
    } 
); //close $.post 

Вот метод, который добавляет File объект на javascript object в.

function update_json_(json_data) 
{ 
    if(has_element("input[type=file]")) 
    { 
     var inputs = $("input[type=file]"); 
     fileobjs = []; 
     for (var i = 0; i < inputs.length; i++) 
     { 
      fileobjs.push(inputs.eq(i).prop("files")[0]); 
     } 
     $.extend(json_data, { files : fileobjs }); 
    } 
    return json_data; 
} 

Но на данный момент я получаю сообщение об ошибке в firebug.

NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object 
[Break On This Error] 

...catch(c){return _.u}},stringify:function(f){function g(c){return h.call(this,c,a... 
+1

Ajax не поддерживает тип файла, у вас есть два варианта здесь, если вы хотите поддерживать только современные браузеры, которые поддерживают File API использовать [FormData] (HTTPS : //developer.mozilla.org/en-US/docs/Web/API/FormData) еще нужно посмотреть на плагины jQuery, такие как [форма jQuery] (http://www.malsup.com/jquery/form/) –

+0

Можете ли вы привести пример или другую ссылку? : O (с загрузкой файла), поэтому я могу поместить его в проницательный, спасибо :) – Killrawr

+0

какая модель вы ищете ... FormData или плагин –

ответ

1

Необходимо использовать данные формы. , ,

function update_json_(json_data) 
{ 
    if(has_element("input[type=file]")) 
    { 
     var inputs = $("input[type=file]"); 
     fileobjs = []; 
     for (var i = 0; i < inputs.length; i++) 
     { 
      fileobjs.push(inputs.eq(i).prop("files")[0]); 
     } 
     $.extend(json_data, { files : fileobjs }); 
    } 

    //add your files to form data. . 
    var fd = new FormData();  
    fd.append('files', fileobject); 

    //similarly add your other data using fd.put('key', 'val'); 
    . 
    . 

    //return data to be sent 
    return fd; 
} 
+0

передается ли информация в 'json_data' вместе с' fd'? – Killrawr

+0

Нет, вам нужно добавить все пара значений ключей в fd ushing fd.append ('key', 'value'); – ankitpatel

+0

Хм, хорошо, я напишу что-нибудь и посмотрю, как я иду, спасибо :) – Killrawr