jQuery ajax post在控制台上运行,但不在页面上运行

时间:2016-10-18 21:45:56

标签: jquery ajax onclick

我找不到任何搜索的答案。

我有一个简单的按钮,在HTML中使用锚标记:

<a id="beginUpload" href='/upload' class='button-style'>Upload</a>

数据是从HTML上的输入元素生成的,ID为'file'。

我的jQuery方法如下:

$("#beginUpload").click(function () {
    var data = {
        mimeType : document.getElementById('file').files[0].type,
        fileSize : document.getElementById('file').files[0].size
    };
    console.log(data);
    $.ajax({
        type: 'POST',
        url: '/post_asset/',
        data: data,
        dataType: 'json',
        success: function (result) {
            console.log(result);
        },
        error: function (error) {
            console.log(error);
        }
    });
});

当我运行click函数的内容时(在第一次输入文件之后) - 它返回我的预期响应,如下所示:

Object {success: true, upload_url: "http://my_url", id: 12, mime_type: "audio/mp3", size: "52981888"}

但是,当我使用按钮运行此代码时,我收到一个错误,其中包含一个空的errorResponse文本,如下所示:

Object {readyState: 0, responseText: "", status: 0, statusText: "error"}

知道我做错了吗?

2 个答案:

答案 0 :(得分:1)

尝试使用a阻止链接/upload的默认行为(重定向到e.preventDefault()):

$("#beginUpload").click(function (e) {
    e.preventDefault();

    //...Your code here
}

希望这有帮助。

答案 1 :(得分:1)

单击超链接时,需要使用以下内容阻止发布:

../GOPATH/src/MYPROJECT

或者您需要从onclick处理程序返回false。