2013-11-09 5 views
3

Как передать дополнительные переменные через $ .ajax для post.php?Загрузка файла jQuery + php. Передать несколько параметров

Моя первая переменная

var form_data = new FormData($(this)[0]) 

я могу передать его в покое, но если я хочу добавить еще одну переменную и создать массив

data { 
    "form_data": form_data, 
    "name": "hello" 
} 

это does't работу.

Мой текущий код:

$(document).ready(function() { 
    $("form#data").submit(function(){ 

     var form_data = new FormData($(this)[0]); 

     $.ajax({ 
      url: 'post.php', 
      type: 'POST', 
      data: form_data, 
      success: function (data) { 

       $('#result').html(data); 

      }, 
      contentType: false, 
      processData: false 
     }); 

     return false; 
    }); 
}); 

<div id="result"></div> 

<form id="data" method="post" enctype="multipart/form-data"> 
    <input name="file" type="file" /> 
    <button>Submit</button> 
</form> 
+0

Можете ли вы сделать мне [Fiddle] (http://www.jsfiddle.net) смотреть? –

ответ

0

Я бы JSON.stringify это тогда json_decode, когда вы получите его обратно в PHP

вар данных = JSON.stringify ({/ * объект * /});

Затем в вашем php $ data = json_decode (....);

0

Попробуйте определить новый bariable

var name = "hello"; 

, а затем вставить его в $.ajaxdata

$.ajax({ 
     url: 'post.php', 
     type: 'POST', 
     data: "form_data="+form_data+"&name="+name, 
     success: function (data) { 

      $('#result').html(data); 

     }, 
     contentType: false, 
     processData: false 
    }); 

Я никогда не проверить этот скрипт, но есть независимо от того, чтобы проверить это: D

2

Попробуйте это. Объект formData имеет метод append. Вместо этого мы будем использовать это. Мы собираемся добавить файл под именем файла. В PHP доступ к нему - $_FILES['file']. Теперь для массива или объекта, который вы хотите добавить к нему. Используйте JSON.stringify, чтобы превратить его в строку. Мы добавляем строку JSON и добавляем ее к названию 'object'. Для доступа к JSON в PHP json_decode($_POST['object']) он превратит его в объект.

Fiddle

$(function(){ 
    $("form#data").submit(function (e) { 
     e.preventDefault(); 
     var form_data = new FormData(), 
      o = {}; 
     o.name = 'Adam'; 
     o.arr = ['test', 213]; 
     form_data.append('file', $('input[name="file"]', this)[0].files[0]); 
     form_data.append('object', JSON.stringify(o)); 
     $.ajax({ 
      url: '/info/', 
      type: 'POST', 
      data: form_data, 
      success: function (data) { 

       $('#result').html(data); 

      }, 
      contentType: false, 
      processData: false 
     }); 

     return false; 
    }); 
}); 
Смежные вопросы