我正在尝试创建ajax调用并使用文件和其他变量发送数据,如果有帮助我也使用django。
我的尝试:
js文件:
$("#save-new-request-testBtn").click(function(){
var project = $('#project').val();
var newRequestStreams = $('#newRequestStreams').val();
var request_bot_file = $('#request_bot_file')[0].files;
submit_new_request(project,newRequestStreams,request_bot_file );
});
function submit_new_request(project,newRequestStreams,request_bot_file ){
url= "add/submit";
console.log(project);
var new_data;
csfr();
$.ajax({
async:false,
url: url,
type: "POST",
enctype: 'multipart/form-data',
data: ({project:project,newRequestStreams:newRequestStreams,request_bot_file :request_bot_file }),
success: function(data){
new_data= data;
console.log(data);
},
error: function(xhr, status, error) {
$("#formError").html(xhr.responseText);
console.log(xhr.responseText);
}
});
console.log('fgcfg');
return new_data;
}
问题是选择文件: 未捕获的InvalidStateError:无法读取' selectionDirection'属性来自' HTMLInputElement':输入元素的类型('文件')不支持选择。
如何让它发挥作用的任何好建议?
感谢, CFIR
答案 0 :(得分:0)
您需要在https://github.com/douglascrockford/JSON-js下载JSON.js或JSON2.js。 并执行以下操作:
var myDataToSend = JSON.stringify(
{
project: project,
newRequestStreams : newRequestStreams,
request_bot_file : request_bot_file
}
);
和ajax帖子:
$.ajax({
url : url,
type : "POST",
enctype : 'multipart/form-data',
data : 'data=' + myDataToSend ,
success : function(){},
error : function(){},
})
后端使用什么语言,例如在PHP中你可以这样做:
$jsonArr = json_decode($_POST['data']);
获取您所用语言的json_decode等价物。 Python将是:
# Python 2.6+
import json
result = json.loads(post_variable_data_from_ajax)