从数据库获取值后,结果未分配给变量。下面是我的代码。提醒arr结果返回值,但提醒eventimage和Speakerimage为空
var file_data = $('#pic').prop('files')[0];
var form_data = new FormData(); // Create a FormData object
form_data.append('file', file_data); // Append all element in FormData object
$.ajax({
url : serverURL() + "/upload.php",
cache : false,
contentType : false,
processData : false,
data : form_data,
type : 'post',
success : function(arr){
alert(arr[0].result);
imgNewUserPictureName = (arr[0].result);
}
});
var file_data1 = $('#pic1').prop('files')[0];
var form_data1 = new FormData(); // Create a FormData object
form_data1.append('file', file_data1);
$.ajax({
url : serverURL() + "/upload1.php",
cache : false,
contentType : false,
processData : false,
data : form_data1,
type : 'post',
success : function(arr){
alert(arr[0].result);
imgNewUserPictureName1= (arr[0].result);
}
});
var eventimage = imgNewUserPictureName;
var speakerimage = imgNewUserPictureName1;
答案 0 :(得分:0)
ajax函数完成之前的变量分配肯定会引发未定义或空值。这是预期的,因为ajax尚未完成。
有两种方法。回调或异步。但是在这种情况下,回调更为简洁,并且不会阻止用户体验。
看看这个例子
function assignToVar(response){
var assign = response;
alert(assign.title)
}
$(document).ready(function(){
$.ajax({
url :"https://jsonplaceholder.typicode.com/todos/1",
cache : false,
contentType : false,
processData : false,
type : 'get',
success : assignToVar
});
});
在回调中进行分配,最重要的是,在ajax函数完成后调用分配的值。
JS Fiddle在这里 http://jsfiddle.net/keysl183/nb029qcL/4/
答案 1 :(得分:0)
Ajax是异步的,请使用回调函数
var eventimage = '';
var speakerimage = '';
var file_data = $('#pic').prop('files')[0];
var form_data = new FormData(); // Create a FormData object
form_data.append('file', file_data); // Append all element in FormData object
var file_data1 = $('#pic1').prop('files')[0];
var form_data1 = new FormData(); // Create a FormData object
form_data1.append('file', file_data1);
// the magic
function RequestCallback() {
console.log(eventimage)
console.log(speakerimage)
}
$.ajax({
url: serverURL() + "/upload.php",
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(arr) {
alert(arr[0].result);
eventimage = (arr[0].result);
$.ajax({
url: serverURL() + "/upload1.php",
cache: false,
contentType: false,
processData: false,
data: form_data1,
type: 'post',
success: function(arr) {
alert(arr[0].result);
speakerimage = (arr[0].result);
// eventimage and speakerimage is set, run callback function
RequestCallback()
}
});
}
});