2015-06-09 34 views
-1

我的AJAX请求总是发送相同的数据。如何在没有此问题的情况下使用convertImgToBase64函数?回调函数中的Ajax请求(带循环)

$imageMaps[0] = '1.jpeg'; 
$imageMaps[1] = '2.jpeg'; 
for (var k in $imageMaps) { 
    $file = $imageMaps[k] 
    convertImgToBase64($url, function(base64Img) { 
     $file = $imageMaps[k] 
     $.ajax({ 
      type: "POST", 
      async: 0, 
      beforeSend: function(xhr, settings) {}, 
      url: '/request.php?imagePost=1', 
      data: {  
       file: $file, 
       data: base64Img 
      }, 
      processData: 1, 
      cache: 1, 
      xhr: function() {}, 
      success: function(){} 
     }); 
    } 
}) 

request.php

<?php 
    echo $_POST['file']; //output always "2.jpeg" 
?> 
+0

“base64Img”在哪里使用? –

+0

用于上传数据 – dazzafact

回答

0

您发送

 data: $file 

,但你要发送

data: base64Img 

是从回调函数的第一个参数

convertImgToBase64($url, function(base64Img){ 
-1

现在我明白了。 现在唯一的问题是base64编码返回String,它不返回值。

 $imageMaps[0]='1.jpeg'; 
     $imageMaps[1]='2.jpeg'; 
     for (var k in $imageMaps) { 
     $file=$imageMaps[k] 
     $.ajax({ 
         type: "POST", 
         async : 0, 
         beforeSend: function(xhr,settings) { 
         $base64=convertImgToBase64($file); 
         settings.data.img =$base64; 
         settings.data.url= $file; 
         }, 
         url: '/request.php?imagePost=1', 
         data: {img:'',url:$file}, 
         processData: 1, 
         cache: 1, 
         //uploadProgress:progress, 
         xhr: function() { }, 
         success: function(){} 
        }); 
      }