回调函数中的Ajax-Request(带循环)

时间:2015-06-09 17:11:16

标签: jquery ajax asynccallback

我的AJAX请求始终发送相同的数据。如何在没有此问题的情况下使用convertImgToBase64函数?

$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" 
?>

2 个答案:

答案 0 :(得分:0)

您发送

     data: $file

但你要发送

    data: base64Img

这是来自回调函数的第一个参数

convertImgToBase64($url, function(base64Img){

答案 1 :(得分:-1)

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

        $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(){}
                    });
            }