【问题标题】:problem in returning a json response to jquery ajaxupload plugin向 jquery ajaxupload 插件返回 json 响应的问题
【发布时间】:2010-07-12 15:55:26
【问题描述】:

我正在使用jquery ajaxupload插件上传文件。我的default.aspx页面上有以下js

 $(document).ready(function() {
        /* Example 1 */
        var button = $('#button1'), interval;
        new AjaxUpload(button, {
            action: 'upload.aspx',
            name: 'myfile',
            responseType:'json',
            onSubmit: function(file, ext) {
                // change button text, when user selects file
                button.text('Uploading');
                // If you want to allow uploading only 1 file at time,
                // you can disable upload button
                this.disable();
                // Uploding -> Uploading. -> Uploading...
                interval = window.setInterval(function() {
                    var text = button.text();
                    if (text.length < 13) {
                        button.text(text + '.');
                    } else {
                        button.text('Uploading');
                    }
                }, 200);
            },
            onComplete: function(file, response) {               
                button.text('Upload');
                window.clearInterval(interval);
                // enable upload button
                this.enable();
                // add file to the list
                $('<li></li>').appendTo('#example1 .files').text(file);
            }
        });
    }); /*]]>*/</script>    

上面的 js 将调用 upload.aspx.cs 页面加载。我期待来自 upload.aspx 的 json 响应。但我不明白如何从页面加载返回响应。我也尝试过修改'动作' 属性到 'upload.aspx/getdata',其中 'getdata' 是一个方法/webmethod,但我仍然看到页面加载被调用,而不是方法/webmethod。

有人可以帮我获得响应(例如 json 中的上传状态(成功/失败))并将其呈现给 UI 吗?

【问题讨论】:

    标签: .net jquery ajax upload


    【解决方案1】:

    .

    Response.ContentType = "application/json";  
    Response.Write(@"{""Name1"":""FirstValue"", ""Name2"":""SecondValue""}");
    

    或者在你的情况下:

    Response.Write(@"{""Status"":""Success""}");
    

    upload.aspx 页面本身应该是完全空的。

    【讨论】:

    • 感谢 James。我不想直接从 Upload.aspx 页面将其打印到屏幕上,而是将 json 响应发送到 AjaxUpload 方法。这怎么可能?
    • Upload.aspx 是一个简单的程序,它只生成一些文本。如果您的浏览器调用 Upload.aspx,则浏览器将获取结果并将其显示在其窗口中。但是,在这里,AjaxUpload 调用了 Upload.aspx,而 AjaxUpload 将接收它生成的文本。
    • 好的,所以如果我在上传完成后做一个reponse.write,我的浏览器会在Default.aspx中显示这条消息,这是发出请求的。对吗?
    • 没有。如果您在浏览器的地址栏中键入localhost:12345/web/Upload.Aspx,那么您将看到 JSON 文本。但是,在您的 JS 中,AjaxUpload 正在请求 Upload.aspx 并在浏览器后面完全接收它的响应。
    • 抱歉给您带来了困惑。所以我希望它是这样的。Ajaxupload 方法从 upload.aspx 页面接收 response.write 文本,我将不得不处理从 Ajaxupload 在浏览器中呈现它方法
    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多