2015-11-03 3 views
2

Я новичок в Ajax, и я пытаюсь передать несколько переменных в свой PHP-файл, но он не работает. В основном проблема заключается в том, что при передаче нескольких переменных она перестает работать. Я объясняю это подробно ниже.Передача нескольких данных в JQuery

Вот фрагмент моего кода ajax. Я использую это, чтобы загрузить файл:

var mdata = new FormData(); 
mdata.append('image_data', $(this)[0].files[0]); 
var id = $id //$id is passed inside my function. Just assigning it but not necessary 

jQuery.ajax({ 
    type: "POST", // HTTP POST 
    processData: false, 
    contentType: false, 
    url: "includes/ul.php", //Ajax Calls here 
    data: mdata, //Form variables 
    dataType: 'json', 

Приведенный выше фрагмент кода работает. Как вы можете видеть, я прохожу только mdata.

Проблема возникает, когда я пытаюсь передать несколько данных. Загрузка перестает работать. Я попытался отправить электронное письмо моего $_POST, и я получаю пустой массив. Ниже приведен код, который я пробовал, который не работает:

Вот мой код PHP. В основном все работает, когда я передаю только mdata, как показано в первом фрагменте кода. Однако с несколькими переменными он не работает (т.е. мой $ _POST) не получает значение и даже загрузки не работает, то:

<?php 
    $fullSize = "../prod/full_size/"; 
    $thumb = "../prod/thumb/"; 
    $_thumb = "prod/thumb/"; 
    $image_height = 520; 
    $image_width = 650; 
    $id = $_POST["prodID"]; 

    //gets image size info from a valid image file 
    $image_size_info = getimagesize($_FILES['image_data']['tmp_name']); 


    //initiate ImageMagick 
    $image = new Imagick($_FILES['image_data']['tmp_name']); 

    //Upload Full size 
    $image->writeImages($fullSize. $_FILES['image_data']['name'], true); 

    //Resize for thumb 
    if($image_type=="image/gif") //determine image format 
    { 
     //if it's GIF file, resize each frame 
     $image = $image->coalesceImages(); 
     foreach ($image as $frame) { 
      $frame->resizeImage($image_height , $image_width , Imagick::FILTER_LANCZOS, 1, FALSE); 
     } 
     $image = $image->deconstructImages(); 
    }else{ 
     //otherwise just resize 
     $image->resizeImage($image_height , $image_width , Imagick::FILTER_LANCZOS, 1, FALSE); 
    } 

    //write image to a file 
    $results = $image->writeImages($thumb. $_FILES['image_data']['name'], true); 

    //output success response 
    if($results){ 
     $response = json_encode(array('type'=>'success', 'msg'=>'Success')); 
     die($response); 
    } 


?> 

Любая помощь приветствуется. Спасибо :)

ответ

5

Проблема в том, что вам необходимо передать FormData непосредственно на звонок $.ajax, не обернутый в объект. Вы можете использовать append() метод FormData добавить дополнительные поля к нему:

var mdata = new FormData(); 
mdata.append('image_data', $(this)[0].files[0]); 
mdata.append('prodID', id); // < data appended here 

jQuery.ajax({ 
    type: "POST", // HTTP POST 
    processData: false, 
    contentType: false, 
    url: "includes/ul.php", //Ajax Calls here 
    data: mdata, //Form variables 
    dataType: 'json' 
}); 
+0

Нет проблем, рад помочь. –

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