在ajax表单调用后传回多个PHP变量

时间:2019-01-14 19:05:58

标签: php ajax variables

我通过ajax将文件传递给php文件,并且在成功运行后,仅使用die($ var)返回php文件中的1 $变量...

我现在面临的问题是将多个变量传递回ajax成功函数。我尝试使用json编码,但无法正常工作。我想也许与ajax是表单数据有关。

我希望有一种简单的方法可以将多个变量顶部传递回成功函数。

非常感谢您的帮助

var form_data = new FormData(); // Creating object of FormData class
form_data.append("image", file , newimagesrc) // Appending parameter named file with properties of file_field to form_data
form_data.append("oldimagesrc", oldimagesrc) // to re-write over with new image 
form_data.append("email", email)
form_data.append("imagext", fileNameSub)


$.ajax({
url: "UploadProfileImage.php",
type: "POST",
data: form_data,
processData: false,
contentType: false,
success: function(newimagesrc){ 


   //how do i pass back from php these variables
var out1=out1;
var out2=out2;
alert(out1 , out2);
  //help appreciated


var newimagesrc = newimagesrc;
//alert(newimagesrc); alert recieved message

imagename=input.files[0].name;
$('#imageupdate').css('color','green');
$('#imageupdate').text(newimagesrc);


var refreshimage = "Profileimagerefresh.php?avatar="+newimagesrc+"&email="+email;
$('#imagerefresh').load(refreshimage);


}//success 1 messagereturn1

});//ajax1

PHP文件('UploadProfileImage.php')

if(file_exists($oldimagelocation) && is_readable($oldimagelocation)){


$new=$rnd.$accountname.".".$extension;
if ($stat->execute(array("$new","$email"))){

unlink($oldimagelocation);
die($oldimagesrc);      //HERE I PASS 1 $ BACK  - I NEED TO RETURN MORE
exit();
}
else{
die("Failed replace image with image and rename");
exit();
}
 }

2 个答案:

答案 0 :(得分:0)

使用JSON编码是最佳选择。我会推荐这样的东西:

if (file_exists($oldimagelocation) && is_readable($oldimagelocation)) {
    $new = $rnd.$accountname.".".$extension;
    if ($stat->execute([$new, $email])) {
        unlink($oldimagelocation);

        echo json_encode([
            'out1' => $oldimagelocation, 
            'out2' => $oldimagesrc, 
        ], JSON_FORCE_OBJECT);

    } else {
        die("Failed replace image with image and rename");
    }
}

然后在JS中将响应解析为JSON

$.ajax({
    url: "UploadProfileImage.php",
    type: "POST",
    data: form_data,
    processData: false,
    contentType: false,
    success: function(newimagesrc){ 
        let jsonObj = JSON.parse(newimagesrc);
        console.log(jsonObj.out1);
    }
});

答案 1 :(得分:0)

我最近遇到了类似的问题,并使用JSON解决了这个问题。

使用PHP,您可以将变量放入数组中,然后使用json_encode :,然后将其返回到网页上。

现在,使用您的jQuery,您可以使用$.parseJSON,然后将其设置为jQuery中的数组。

这是一个例子:

PHP:

die(json_encode(array('Hello', 'world!')));

jQuery:

$.ajax({
type: 'POST',
url: 'test.php',
}).done(function(result){
var array = $.parseJSON(result);
alert(array[0]);
});