相关疑难解决方法(0)

传递Rgraph图像数据时,jQuery AJAX调用返回403 Forbidden错误

我正在开发一个项目,我使用Rgraph PHP库实现了几个图形/图表.在我的脚本中,我为图表执行以下操作:

  1. 计算图形点并使用Rgraph Draw()方法绘制图形.
  2. 使用该canvas.toDataURL()方法创建图像数据变量.
  3. 使用jQuery AJAX $.post()方法将此图像数据变量传递给服务器.
  4. 通过PHP脚本将图像保存到服务器.

此解决方案中的所有内容在我的localhost上运行良好,但是在开发服务器上,传递图像数据的AJAX请求返回a 403 Error.

我在客户端和服务器端都记录了数据以确定问题.客户端日志记录确认传递的imageData变量看起来正确.但是,服务器端日志记录确认传递的imageData变量是导致问题的原因.

去年有一个非常类似的问题,但他们无法确定这个问题的根本原因.任何人都可以帮我指出解决这个问题的正确方向吗?

我认为这是一个可能的数据编码问题,但如果是这种情况,为什么它在一台服务器而不是另一台服务器上运行?

我的相关Javascript:

radar.Set('chart.contextmenu', [
     ['Get PNG', RGraph.showPNG],
     null,
     ['Cancel', function () {}]
]);

radar.Draw();   

var imageData = radar.canvas.toDataURL("image/png");

console.log('imageData: ' + imageData);
console.log('filename: ' + 'tmpRadar<?php echo $us['UsersSurvey']['user_id']; ?>-<?php echo $survey['Survey']['id']; ?>.png');

$.post("/Surveys/save_chart", { 
    src     : imageData, 
    filename: 'tmpRadar<?php echo $us['UsersSurvey']['user_id']; ?>-<?php echo $survey['Survey']['id']; ?>.png'
});
Run Code Online (Sandbox Code Playgroud)

客户端记录:

imageData: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAOECAYAAACxbcj6AAAgAElEQ…AgQIAAgVECAqxR49YsAQIECBAgQIAAAQIECBAgQKCfwP8CXHJ+WDHVMbcAAAAASUVORK5CYII=
filename: tmpRadar19-1.png
POST http://website.com/Surveys/save_chart 403 (Forbidden) …
Run Code Online (Sandbox Code Playgroud)

javascript php ajax jquery cakephp

12
推荐指数
1
解决办法
3876
查看次数

在IE中使用jQuery.ajax发送multipart/formdata

有没有办法在Internet Explorer中执行以下解决方案?(IE7及以上)

link:使用jQuery.ajax发送multipart/formdata

解决方案代码在IE的每个浏览器中都很有用.

javascript jquery internet-explorer

10
推荐指数
1
解决办法
5万
查看次数

Rails - 表单在AJAX调用期间不提交任何数据 - 文件上载 - 422状态代码

我在尝试使用bootsy gem上传文件时遇到了问题,但问题与bootsy本身无关.Bootsy生成一个具有以下定义的表单:

<form class="bootsy-upload-form form-inline" id="new_image" data-type="json" enctype="multipart/form-data" action="/bootsy/image_galleries/67/images" accept-charset="UTF-8" data-remote="true" method="post">
<input name="utf8" value="?" type="hidden">
<input name="authenticity_token" id="authenticity_token" value="1pQMR5j33OKupMg4TSnQafLQx1BxzWjkP1KqTfZafqDRfGqwB8r2J4FzRE+dyuoHVOw/W0qd1FZ1JoJsJFThDQ==" type="hidden">
...
Run Code Online (Sandbox Code Playgroud)

当我尝试上传文件时,执行以下行:

this.uploadInput.closest('form').submit();
Run Code Online (Sandbox Code Playgroud)

我之前添加了警报,所以我会看到表单的序列化数据是如何显示的,所有字段都按预期显示(包括真实性标记等):

alert(this.uploadInput.closest('form').serialize());
Run Code Online (Sandbox Code Playgroud)

提交表单时,在POST请求期间没有数据发送,只有标题,在浏览器检查器中看不到任何内容,在rails的日志文件中看不到任何内容,它只是如下所示:

Started POST "/bootsy/image_galleries/47/images" for ::1 at 2016-02-05 11:20:04 +0100
Processing by Bootsy::ImagesController#create as HTML
Parameters: {"image_gallery_id"=>"47"}
Can't verify CSRF token authenticity
Completed 422 Unprocessable Entity in 0ms (ActiveRecord: 0.0ms)
FATAL -- : 
ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken:
_ actionpack (4.2.4) lib/action_controller/metal/request_forgery_protection.rb:181:in `handle_unverified_request'_
Run Code Online (Sandbox Code Playgroud)

我在表单中生成了真实性令牌,我在元标记中有令牌,一切看起来都很好,没有任何错误被抛出.我还尝试创建类似于我的真实项目的示例应用程序,它按预期工作,形成正常提交的数据 - 当我尝试比较HTML代码和附加到两者的javascript事件时,它们几乎相似,因为其他因为其他部分宝石像ajax_pagination等,但没有任何部分,这应该导致这样的行为.

我正在使用Rails 4.2.4,使用body元素上的属性data-no-turbolink禁用turbolinks,项目使用bootstrap并包含JS库,如jQuery,下划线,欧芹,momentjs.

我会很感激任何想法,可能出错的原因,为什么表单不应该提交任何数据,哪里可能是一个问题.提前感谢任何提示.

更新: 为了澄清事情,我在使用AJAX发送之前拍摄了一个状态 - 这个javascript是jQuery的jquery_ujs = RoR适配器的一部分.您可以看到,该数据包含发送前的所有表单域: 在此输入图像描述

但是数据不会发送到服务器: …

forms ajax ruby-on-rails

9
推荐指数
1
解决办法
834
查看次数

使用jquery和handler(ashx)上传文件

我正在尝试使用带有处理程序(c#)的jquery ajax上传文件.问题是,当我调用处理程序时,我得到了

context.Request.File.Count=0
Run Code Online (Sandbox Code Playgroud)

这是aspx代码:

<!--aspx file code-->
<script language="javascript" type="text/javascript">
$().ready(function () 
{
    $('#save').click(function (e)
    {
        CalluploaderHandler();
    });
});

function CalluploaderHandler()
{
    $.ajax({
                type: "POST",
                url: "Services/UPloader.ashx",
                contentType: "application/json; charset=utf-8",
                success: OnComplete,
                error: OnFail
            });
    return false;
}

function OnComplete(result)
{
    alert('Success');
}

function OnFail(result)
{
    alert('Request failed');
}

</script>
    </head>
        <body>
            <form  enctype="multipart/form-data">
                <label for="file">
                Filename:</label>
                <input name="file" id="file" type="file">
                <input id="save" name="submit" value="Submit" type="submit">
            </form>
        </body>
    </html>    
Run Code Online (Sandbox Code Playgroud)

c#代码处理程序:

/* handler*/
public void ProcessRequest(HttpContext context)
{
    string savedFileName = …
Run Code Online (Sandbox Code Playgroud)

upload jquery file-upload handler

8
推荐指数
1
解决办法
3万
查看次数

使用RubyOnRails上传HTML5 FormData文件

我使用这个脚本在Rails 3.2.8应用程序中使用HTML5 FormData上传文件(逐个).

http://jsfiddle.net/RamPr/

$('.uploader input:file').on('change', function() {
  $this = $(this);

  $('.alert').remove();

  $.each($this[0].files, function(key, file) {
    $('.files').append('<li>' + file.name + '</li>');

    data = new FormData();
    data.append(file.name, file);

    $.ajax({
      url: $('.uploader').attr('action'),
      contentType: 'multipart/form-data',
      type: 'POST',
      dataType: 'json',
      data: data,
      processData: false
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

但是当我上传文件时,我在控制台中收到此错误:

webrick/server.rb:191:in `block in start_thread' ERROR ArgumentError: invalid %-encoding ("filename.jpeg" Content-Type: image/jpeg
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

ajax html5 file-upload ruby-on-rails form-data

7
推荐指数
1
解决办法
9919
查看次数

文件上传完成后如何调用JS回调?

我正在为带有appengine后端的应用创建前端上传.

我想要的是一个文件上传解决方案,我不想使用plupload或那些现成的解决方案.

我基本上将图像提交给iframe,然后在上传时盖上封面.然后,在完成后,我执行了一个ajax调用,以获取要渲染的下一个视图的图像ID.但是,在上传完成之前总是调用渲染,因此我没有从后端获取任何图像ID.谁能帮忙?

这是我上传的代码

perform_input3:(event)=>
    event.preventDefault()
    $('#product-input-3').hide()
    $('#product-input-3').submit()
    $('#upload-cover').show()
    item_id = $('#item3_id').val()
    app.views.imageselect.render(item_id)
Run Code Online (Sandbox Code Playgroud)

app.views.imageselect.render(item_id)如下:

render:(data)=>
    @item_id = data
    item_id = @item_id
    $.ajax(
        url: '/get_image_list/'
        type: 'GET'
        dataType: 'json'
        data: {item_id: item_id}
        success:(data) =>
          @payload = data
          $(@el).append imageSelectTemplate(@payload)
          return @
    )
Run Code Online (Sandbox Code Playgroud)

我不想使用setTimeout函数,因为它不会灵活,具体取决于连接速度.任何帮助将不胜感激 :)

javascript jquery google-app-engine flask coffeescript

6
推荐指数
1
解决办法
2066
查看次数

jquery支持Transfer-Encoding:chunked?怎么样

我是一名网络开发人员.在我的脚本中使用header()来设置"Transfer-Encoding:chunked".和flush()到网页.它会在网页上分时打印.它工作正常.但是,当我使用jQuery.ajax()来请求this.it时总是输出所有(chunked unuseful).

怎么解决这个?在jQuery ajax中使用chunked编码?

php jquery chunked

6
推荐指数
1
解决办法
8075
查看次数

Multipart Form上传图片和Json

有点卡在这一个,需要使用多部分表单上传图像和json ..不知道如何发送内容类型标题或上传图像..认为我需要转换为blob ..此刻我只是发送我从文件输入字段获得的数据.

任何建议都会非常感谢

        $http({
        method: 'POST',
        url: URL,
        headers: { 'Content-Type': false },

        transformRequest: function (data) {

            console.log(data);

            var formData = new FormData();
            formData.append("formatteddata", angular.toJson(data.model));


            formData.append('media', Image)

            return formData;
        },

        data: { model: shoutoutData, image: shoutoutImage}
    }).
    success(function (data, status, headers, config) {

        alert("success!");

    }).
    error(function (data, status, headers, config) {

        alert("failed!");

    });
Run Code Online (Sandbox Code Playgroud)

forms multipartform-data angularjs

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

如何在一个也是延迟承诺的函数中依次发送文件上传?

我打算使用jQuery上传一个文件数组.

这个意图包含在一个名为的函数中uploadFilesUsingAjax();

var uploadFilesPromise = uploadFilesUsingAjax();

$.when(uploadFilesPromise).done(function (uploadFilesAjaxResult) {
        // redirect to success page...
Run Code Online (Sandbox Code Playgroud)

在做其他事情之前,我需要等待所有文件成功上传.

里面uploadFilesUsingAjax(),

我这样写了我的代码

function uploadFilesUsingAjax() {
    var files = pages; // pages is a global variable which is an array of files
    var url = "/users/" + currentUser.id + "/files.json";
    var type = "POST";

    console.info('files length:' + files.length);
    if (files.length > 0) {

        var promises=[];
        for (var i = 0; i < files.length; i++) {
            var data = new FormData();
            var postData …
Run Code Online (Sandbox Code Playgroud)

javascript jquery promise sequential deferred

5
推荐指数
1
解决办法
1602
查看次数

为什么 Flask 没有收到我的 POST Blob?

我的问题是我使用 FormData 向服务器发送一个 Blob,但服务器没有得到它。代码如下所示:

Flask 服务器代码:

@app.route('/save-record', methods=['POST'])
def save_record():
    app.logger.debug(request.form.keys()) #Shows only the title key, not the file key
Run Code Online (Sandbox Code Playgroud)

客户端JS代码:

var save = function() {
    var form = new FormData();
    form.append('file', record.blob, record.filename);
    form.append('title', searchedObj.title);
    //Chrome inspector shows that the post data includes a file and a title.                                                                                                                                           
    $.ajax({
      type: 'POST',
      url: '/save-record',
      data: form,
      cache: false,
      processData: false,
      contentType: false
    }).done(function(data) {
      console.log(data);
    });
Run Code Online (Sandbox Code Playgroud)

javascript blob form-data flask

5
推荐指数
1
解决办法
6361
查看次数