Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向Jquery Ajax传递数据的正确方法_Javascript_Jquery_Ajax_Laravel 5.1 - Fatal编程技术网

Javascript 向Jquery Ajax传递数据的正确方法

Javascript 向Jquery Ajax传递数据的正确方法,javascript,jquery,ajax,laravel-5.1,Javascript,Jquery,Ajax,Laravel 5.1,使用jquery向ajax传递数据的正确方法是什么。我有以下方法,我想从元标记传递CSRF令牌,但它不起作用 <meta name="csrf-token" content="{{ csrf_token() }}"> <div class="fallback"> <input type="file" name="logo" id="logo" class="inputfile"/> </div> $(document).on("c

使用jquery向ajax传递数据的正确方法是什么。我有以下方法,我想从元标记传递CSRF令牌,但它不起作用

<meta name="csrf-token" content="{{ csrf_token() }}">
<div class="fallback">
       <input type="file" name="logo" id="logo" class="inputfile"/>
</div>


$(document).on("change", ".fallback .inputfile", function() {
    $.ajax({
        url: "/upload",
        type: 'POST',
        cache: false,
        data:  {
            _token: $('meta[name="csrf-token"]').attr('content')
        },
        files: $(":file", this),
        iframe: true,
        processData: false
    }).complete(function(data) {
        console.log(data);
        // $('#img-thumb').attr('src', data.path);
        // $('input[name="job_logo"]').val(data.path);
    });
});
我遵循了以下来源的文档

我犯了一个错误。注:这是使用Laravel 5.1

*更新*

应该能够将令牌直接添加到data属性,因为csrf令牌已经在我的meta标记中。下面是一个使用backbone.js/ruby-on-rails的例子,但我不是backbone/rails方面的专家,所以如果有人能将其翻译成jquery,那将是很有帮助的。()


您需要将以下内容添加到页面:

$(function() {

    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' } });

});
这是因为每次您向服务器发送AJAX请求时,AJAX都需要
X-CSRF-TOKEN
(除非您将其关闭,我不建议这样做)


来源:我自己在
Laravel

方面的经验您需要将此添加到您的页面:

$(function() {

    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' } });

});
这是因为每次您向服务器发送AJAX请求时,AJAX都需要
X-CSRF-TOKEN
(除非您将其关闭,我不建议这样做)

来源:我自己在
Laravel
方面的经验

您已经告诉jQuery不要将包含数据的对象转换为适合通过HTTP传输的格式


您已经告诉jQuery不要将包含数据的对象转换为适合通过HTTP传输的格式。

当您使用console.log($('meta[name=“csrf token”]”)时会发生什么情况。attr('content')?令牌是否公开了预期值?关于文件呢?在network inspection面板中,令牌是否实际被发送,或者jquery是否使用来自ajax选项的files属性的数据覆盖了它?相关:当您控制台.log($('meta[name=“csrf token”]')).attr('content')时会发生什么?令牌是否公开了预期的值?那么文件呢?在网络检查面板中,令牌是否实际被发送,或者jquery会用ajax选项的files属性中的数据覆盖它吗?相关:@ozzii你试过我的建议吗?我试过你说的,它会发布,但是文件是空的-请参阅我的laravel方法-每次都返回false,这意味着文件没有被发送。这就是我实际使用的答案。它起作用了fine@ozzii你试过我的建议了吗?我试过你说的,但是文件是空的-看我的laravel方法-每次都返回false,这意味着文件没有被发送。这就是我实际使用的答案。它工作得很好我正在遵循文档
https://cmlenz.github.io/jquery-iframe-transport/
我正在阅读文档
https://cmlenz.github.io/jquery-iframe-transport/
$(function() {

    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' } });

});
    processData: false