相关疑难解决方法(0)

如何在jQuery中使用Ajax请求发送FormData对象?

XMLHttpRequest的2级标准(还是工作草案)定义FormData的接口.此接口允许将File对象附加到XHR请求(Ajax请求).

顺便说一句,这是一个新功能 - 在过去,使用了"隐藏iframe技巧"(在我的另一个问题中阅读).

这就是它的工作原理(例子):

var xhr = new XMLHttpRequest(),
    fd = new FormData();

fd.append( 'file', input.files[0] );
xhr.open( 'POST', 'http://example.com/script.php', true );
xhr.onreadystatechange = handler;
xhr.send( fd );
Run Code Online (Sandbox Code Playgroud)

where input是一个<input type="file">字段,handler是Ajax请求的成功处理程序.

这在所有浏览器中都很漂亮(除了IE之外).

现在,我想使这个功能与jQuery一起使用.我试过这个:

var fd = new FormData();    
fd.append( 'file', input.files[0] );

$.post( 'http://example.com/script.php', fd, handler );
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用(抛出"非法调用"错误 - 截图在这里).我假设jQuery需要一个表示form-field-names/values的简单键值对象,而FormData我传入的实例显然是不兼容的.

现在,由于可以将FormData实例传入xhr.send(),我希望它也可以使它与jQuery一起使用.


更新:

我在jQuery的Bug Tracker上创建了一个"功能票".它在这里:http://bugs.jquery.com/ticket/9995

我被建议使用"Ajax prefilter"...... …

javascript ajax jquery html5 multipartform-data

468
推荐指数
6
解决办法
73万
查看次数

使用javascript上传图片

我被困了!! :(我想上传带有标题和标题的图像文件,我想使用javascript验证标题标题和文件选择.

我的HTML在这里:

<input type="text" name="title2" id="title2" value="title" /><br />

<textarea cols="50" rows="10" name="caption" >caption goes here...</textarea><br />
<input type="file" name="photo" id="photo" /><br />
<button id="submit_info" onclick="photowcap()" >post</button><br />
Run Code Online (Sandbox Code Playgroud)

和我的javascript在这里:

function photowcap()
{

var title = document.getElementsByName("title2")[0].value;
var photo = document.getElementsByName("photo")[0].value;
var captions = document.getElementsByName("caption")[0].value;
var caption = encodeURIComponent(captions)

var xmlhttp;
if(title == "" || title == " " || title == "title")
{
    document.getElementsByName("title2")[0].focus();
    document.getElementsByName("title2")[0].value="";
    return;
}
else if(captions == "" || captions == " " || captions == …
Run Code Online (Sandbox Code Playgroud)

javascript php

4
推荐指数
1
解决办法
5029
查看次数

通过Ajax提交表单 - FormData始终为空

我需要使用ajax在服务器上上传照片.我也设置了javascript的表单,但FormData对象总是空的!我尝试了各种方法来引用实际的表单,但仍然无法正常工作.

小提琴示例:https: //jsfiddle.net/cjngvg8a/

谢谢!

HTML:

<form id="profileImageForm" action="update.php" method="post" enctype="multipart/form-data">
<input type="text" value="hello" name="test" />
<input type="file" name="profile_pic" id="image_upload"/>
<input type="submit" value="Save"/>
</form>
Run Code Online (Sandbox Code Playgroud)

JS:

$('#profileImageForm').on('submit',(function(e) {
    e.preventDefault();     
    var formData = new FormData(this);

    console.log(formData);

    $.ajax({
        type:'POST',
        url: $(this).attr('action'),
        data:formData,
        cache:false,
        contentType: false,
        processData: false,
        success:function(data){
            console.log("success");
            console.log(data);
        }
    });
}));
Run Code Online (Sandbox Code Playgroud)

html javascript forms ajax jquery

4
推荐指数
1
解决办法
3573
查看次数

标签 统计

javascript ×3

ajax ×2

jquery ×2

forms ×1

html ×1

html5 ×1

multipartform-data ×1

php ×1