如何使用其他字符串的变量发送ajax请求文件?

时间:2014-11-02 08:43:09

标签: jquery ajax django html5 file-upload

我正在尝试创建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

1 个答案:

答案 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)