如何使用$.ajax(); Laravel 中的函数

2024-03-13

我需要通过 ajax 添加新对象,但我不知道如何在 laravel 中使用 $.ajax() 函数。

我在刀片模板中的形式是:

{{Form::open(array('url'=>'expense/add', 'method' => 'POST', 'class' => 'form-signin', 'id' => 'expenseForm'), array('role'=>'form'))}}
      {{Form::select('period_id', $data['period'], null, array('class' => 'form-control'))}}
      {{Form::select('expense_category_id', $data['categories'], null, array('class' => 'form-control'))}}
      {{Form::text('date_expense', null, array('placeholder' => 'Fecha', 'class' => 'form-control'))}}
      {{Form::text('amount', null, array('placeholder' => '¿cuanto fue?', 'class' => 'form-control'))}}
      {{Form::hidden('user_id', Auth::user()->id)}}
    <br />
    {{Form::button('Add expense', array('class'=>'btn btn-lg btn-primary btn-block', 'id' => 'btnSubmit'))}}
  {{Form::close()}}

我在控制器中的代码是:

public function addExpense(){
    $expense = new Expense;
    $data = Input::all();

    if ($expense->isValid($data)) {
        $expense->fill($data);
        $expense->save();
        //Recargar la tabla gastos
        return Redirect::to('expense/index')->with('success', 'El gasto ha sido agregado correctamente.');
    }

    return Redirect::back()->withInput()->withErrors($expense->errors);
}

我的js是:

$("#btnSubmit").click(submitExpenses);

这是我的函数submitExpenses

var submitExpenses = function(){
        console.log("Llega aquí :O");
        $("form#expenseForm").submit(function(){
            $.ajax({
                type: 'post',
                cache: false,
                dataType: 'json',
                data: $('form#expenseForm').serialize(),
                beforeSend: function() { 
                    //$("#validation-errors").hide().empty(); 
                },
                success: function(data) {
                    console.log("Success!");
                },
                error: function(xhr, textStatus, thrownError) {
                    alert('Something went to wrong.Please Try again later...');
                }
            });
        });
    };

感谢帮助! :D


您需要更改 ajax 请求并添加一个 URL,以便将 POST 数据提交到:

$.ajax({
    url: '/your/route/to/addExpense/method'
    type: 'post',
    cache: false,
    dataType: 'json',
    data: $('form#expenseForm').serialize(),
    beforeSend: function() { 
        //$("#validation-errors").hide().empty(); 
    },
    success: function(data) {
        console.log("Success!");
    },
    error: function(xhr, textStatus, thrownError) {
        alert('Something went to wrong.Please Try again later...');
    }
});

但这还不是全部

看起来您构建的表单也可以容纳非 JavaScript 提交。不过,这很好,当您单击该按钮时,不仅会发送 ajax 请求,而且还会提交表单。改变你的submitExpenses函数接受事件对象作为参数,以便您可以取消单击按钮时的默认操作:

var submitExpenses = function(e){
    e.preventDefault();
    ...

还有一件事

当您通过 ajax 提交请求时,您将收到回复。在您的控制器中,您实际上正在重定向用户,这是您在发出 ajax 请求时不希望执行的操作。在您的请求中,您指定希望以 json 格式向您发送一些返回数据。您需要更改控制器中的这些行:

return Redirect::to('expense/index')->with('success', 'El gasto ha sido agregado correctamente.');

and

return Redirect::back()->withInput()->withErrors($expense->errors);

返回某种类型的 json 对象,指示成功/失败。

However,

就像我之前说的,您的表单无需启用 JavaScript 即可提交,因此,如果您确实更改了控制器中的这些行,那么这些用户在提交表单时只会看到 json 对象。该问题的答案是在控制器中检测提交是否通过 ajax 发送,并适当格式化响应:

public function addExpense(){
    $expense = new Expense;
    $data = Input::all();
    //$isAjax = Request::ajax();
    // It is probably better to use Request::wantsJson() here, since it 
    // relies on the standard Accepts header vs non-standard X-Requested-With
    // See http://stackoverflow.com/a/28606473/697370
    $isAjax = Request::wantsJson();

    if ($expense->isValid($data)) {
        $expense->fill($data);
        $expense->save();
        //Recargar la tabla gastos
        if($isAjax) {
            // Return your success JSON here
        } 

        return Redirect::to('expense/index')->with('success', 'El gasto ha sido agregado correctamente.');
    }

    if($isAjax) {
        // Return your fail JSON here
    } 
    return Redirect::back()->withInput()->withErrors($expense->errors);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用$.ajax(); Laravel 中的函数 的相关文章

  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 使用 Jquery 清除 5 个空 TD

    我有一个正在填充的动态表 我知道我不应该这样做 但是你会如何连续找到 5 个空 TD 并隐藏它们呢 因此 如果行包含 5 个空 TD 则不显示 TD 我想删除每个实例 td td td td td td td td td td 在 DOM
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • Laravel 4 使用资源控制器轻松删除记录

    我是 Laravel 框架的新手 但我真的很喜欢它 我最大的问题是我一直在寻找如何使用资源控制器删除单个记录 控制器方法 public function destroy id department Department find id de
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 分页在服务器端好还是前端好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在构建 Laravel Vue 应用程序 我想知道在后端使用分页还是在前端使用分页更好 我认为最好在每页发送尽可能少的数据的请求 但我想听听
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐

  • 如何在 networkX 图中弯曲边缘

    I had previous asked this question https stackoverflow com questions 63918432 curved edges in networkx on how to achieve
  • 在 OS X 10.5 上使用 readline 的 rl_insert_text

    因此 我尝试使用 readline 将一些默认文本填充到用户输入中 但无法使其在 OSX 10 5 上工作 rl insert text ex c gcc o rl insert text ex rl insert text ex c lr
  • PHP 5.3 之前的数组中的闭包对象

    我知道可以使用 PHP 5 3 匿名函数 执行以下操作 但是在较旧的 PHP 版本 5 3 之前 中是否有类似的替代方法 exampleArray array func gt function echo this is an example
  • SelectListItem 中的选定属性永远不起作用 (DropDownListFor)

    我在选择 DropDownList 的值时遇到问题 我一直在阅读所有类似的帖子 但找不到解决方案 实际的方法对我来说似乎非常好 因为我可以检查 SelectList 内的字段 var selectList new List
  • 我如何告诉 ProGuard 保留用于 onClick 的函数?

    我正在使用android onClick属性在我的 android 应用程序的一些 xml 布局文件中 但 ProGuard 在运行时从我的代码中删除了这些方法 因为我的代码中没有任何内容调用它们 我不想单独指定每个函数 而是想将它们命名为
  • jQuery:正确循环对象?

    我尝试使用以下代码片段循环访问下面显示的 JS 对象 同时需要获取索引键和内部对象 我到底应该怎么做 因为以下不起作用 物体 prop 1 1 2 prop 2 3 4 My code each myObject function key
  • SqlDependency onchange 事件无限循环

    我有一个简单的查询 并且事件在正确的时间触发 然而 一旦被解雇 该财产 HasChanges 的SqlDependency对象始终设置为true 第一次触发 OnChange 时 SqlNotificationEventArgs Info
  • 带有非字母数字字段名称的cosmos db sql查询

    我在 cosmosdb 中的数据结构是下一个 id oid 554f7dc4e4b03c257a33f75c 我需要对集 合进行排序 oid场地 我应该如何形成我的 sql 查询 普通查询SELECT TOP 10 FROM collect
  • 分段控件可在多个表视图之间切换

    我基本上尝试的是实现 Mailbox 中的控制段 表视图 在 2 00 左右查看 我正在其中使用 Core DataUITableViewController连接到一个UITableView 当用户切换UISegmentedControl
  • nunique 排除 pandas 中的某些值

    我正在计算每行的唯一值 但是我想排除值 0 然后计算唯一值 d col1 1 2 3 col2 3 4 0 col3 0 4 0 df pd DataFrame data d df col1 col2 col3 0 1 3 0 1 2 4
  • Lua math.random 不起作用

    所以我正在尝试创建一些东西 并且我到处寻找生成随机数的方法 然而 无论我在哪里测试代码 它都会产生非随机数 这是我写的一个例子 local lowdrops Wooden Sword Wooden Bow Ion Thruster Mach
  • 使用经过身份验证的 REST 请求缓存代理

    考虑以下场景 我有 RESTful URL articles 返回文章列表 用户在每个请求上使用授权 HTTP 标头提供其凭据 根据用户的权限 文章可能因用户而异 对于这种情况 是否可以使用缓存代理 例如 Squid 代理将只看到 URL
  • 如何在Golang中正确使用OAuth2获取谷歌电子邮件

    我已经尝试使用 OAuth 成功进行身份验证golang com x oauth2图书馆 provider variable is oauth2 Config scope is https www googleapis com auth u
  • xcodebuild:错误:“APP.xcworkspace”不存在

    我正在尝试使用 gitlab 设置 CI 当我尝试在本地构建时 出现此错误 xcodebuild error APP xcworkspace does not exist APP 不是真实名称 我也在使用 CocoaPods 我在终端中运行
  • 无法更新 RubyGems

    我在将 RubyGems 从版本 1 1 1 更新到最新版本时遇到困难 我尝试过以下方法 宝石更新 Result 更新已安装的 gem批量更新 Gem 源索引 http gems rubyforge org http gems rubyfo
  • 为结构变量赋值

    结构类型定义为 typedef struct student int id char name double score Student 我构造了一个 Student 类型的变量 并且想为其赋值 我怎样才能有效地做到这一点 int main
  • EVC++下的StandardSDK 4.0可以在远程设备上调试吗?

    我在跑 with 为运行 CE 5 0 的设备开发应用程序 我正在使用为此 它工作得很好 除了以下事实 虽然它以我的设备 即基于 SH4 的 PDA 为目标 但它不会让我选择 StandardSDK 模拟器以外的任何东西进行调试 如果我去工
  • Linux - TCP connect() 失败并出现 ETIMEDOUT

    对于 TCP 客户端 connect 调用 TCP 服务器 Richard Stevens 的 UNIX 网络编程 一书说道 如果客户端 TCP 未收到对其 SYN 段的响应 则返回 ETIMEDOUT 4 4BSD 例如 调用 conne
  • 为什么不能同时为结构体及其指针定义方法?

    鉴于设置第 54 张幻灯片 http tour golang org 54golang之旅 type Abser interface Abs float64 type Vertex struct X Y float64 func v Ver
  • 如何使用$.ajax(); Laravel 中的函数

    我需要通过 ajax 添加新对象 但我不知道如何在 laravel 中使用 ajax 函数 我在刀片模板中的形式是 Form open array url gt expense add method gt POST class gt for