javascript - 在 Laravel 中使用 AJAX 编辑字段
问题描述
我正在尝试$medic->current
根据我的逻辑更新字段。我是 ajax 新手,我只需要开始它。
在我的代码中,我计算两个日期之间的差异{ $medic->end_day ,当前日期}。根据他们的日期差异,我更改了“当前”字段。如果差异 < 0 ,则 current = 0 否则 current = 1 是我想要做的。
那么如何使用 AJAX 来编辑$medic
. 下面是代码。
<script>
window.onload = checkcurrent;
var today = new Date();
@foreach($medics as $medic)
@if($medic->current == 1)
function checkcurrent()
{
var status = {{$medic->current}};
var last_date= new Date('{{ \Carbon\Carbon::createFromFormat('d/m/Y', $medic->end_day)->toDateString() }}');
var new_last_date = new Date(last_date.getFullYear(),last_date.getMonth(),last_date.getDate());
var diff = parseInt((new_last_date - today) / (1000 * 60 * 60 * 24));
if(diff<0)
{
status = 0;
$.ajax({
url: "stocks/{stock_tag}/medications/updatecurrent/{info_id}",
type: "put",
data: { current: 0 } ,
success: function (response) {
console.log('success');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
}
else
{
status = 1;
}
}
@endif
@endforeach
</script>
这也是我在控制器中的功能:
public function updatecurrent($stock_tag,$info_id)
{
$stock = Stock::find($stock_tag);
$findInformation= Medication::where('id','=',$info_id)->first();
$id=Input::get('current');
$stock->under_medication=$id;
$findInformation->current=$id;
$stock->save();
$findInformation->save();
}
我只需要有关 ajax 代码的帮助,因为休息很好并且可以工作。当状态为 0 时,我想将“当前”字段编辑为 0。如何执行此操作?
解决方案
我已经解决了我的问题。我实际上在模型本身中创建了一个函数来实现我的结果。
下面是代码:
public function autocheck()
{
$stock =Stock::where('tag_no','=', $this->attributes['tag'])->first();
$medication =Medication::where('tag','=',$stock->tag_no)->where('current','=',1)->first();
$today = Carbon::now();
list($enddays_day, $enddays_month, $enddays_year) = explode('/', $medication->end_day);
$last_day = Carbon::createFromDate($enddays_year,$enddays_month,$enddays_day);
$difference = $last_day->diffInDays($today);
if ($difference == 0) {
return "ends today";
}
else
if ($last_day < $today)
{
$medication->current = 0;
$stock->under_medication = 0;
$medication->save();
$stock->save();
return "Finished Medication ";
}
else
{
return $difference." day left";
}
}
要使该功能正常工作,只需使用{{$paramater->function_name()}}
. 下面是我的代码:
@if ($medic->current == 1)
<h2>Status : {{ $medic->autocheck() }}</h2>
@endif
推荐阅读
- terraform - 在 terrform 中配置远程状态似乎是重复的?
- abap - ', ` 和 | 之间有什么区别,什么时候应该使用它们?
- telegram - 无法使用带有 Node-Red 的 IBM Watsown Speech to Text 对电报语音消息进行转码
- reactjs - 来自 firebase 通知的数据即将到来未定义?
- tfs - Azure DevOps 2019 上存储的 Nuget 包在哪里
- android - 4K分辨率Android设备中的额外间距问题
- android - ScrollView 内的 View 中的 OnTouchListener
- druid - Druid:缓存查找失败,因为在摄取期间“找到 Null 或 Empty Dimension”
- c# - 如何在 Linq Select 语句中将函数作为表达式传递?
- mysql - 如何通过产品 ID 获取不同的状态计数