یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دورهها
استفاده از تخفیفهادوستان من یک پروژه دارم میره با کلیک روی دکمه سرچ میره دنبال یک راننده میگرده
در ویو
@if($order->accept == ۱)
<script>
window.setTimeout(function () {
window.location.href = "http://localhost:۸۰۰۰/confirmed/{{$order->id}}";
}, ۱۲۰۰۰);
</script>
@endif
بهش میگم برو به کنترلر مربوطه و نتیجه رو بفرست
در کنترلر
public function confirmed($order_id)
{
$order = Order::find($order_id);
if ($order->accept == ۴) {
$message = '';
return view('trip.html.trip', compact('order', 'message'));
} else {
return view('trip.html.trip', compact('order'));
}
}
میره چک های لازمه را انجام میده و برمیگردونه
ولی خب صفحه رفرش میشه
میشه کسی کدی بگه چکار میشه کرد که رفرش نشه صفحه و عملیات انجام بشه عین اسنپ
سلام
من منطق کدهاتون رو متوجه نمیشوم چرا دارید از setTimeout استفاده میکنید مگه قرار نیست کاربر روی دکمه جسجتو کلیک کنه؟؟؟؟ خوب وقتی روی دکمه کلیک کرد توی رویداد کلیک دکمه یه درخواست Ajax بفرستین.
توی کنترولر هم شما View رو برمیگردونید در صورتی که باید یک آبجکت در قالب json بفرستید.
@Igo
نه بدین صورت است که کاربر یکبار روی دکمه جستجو کلیک میکنه
حالا صفحه میره به کنترلر و اکشن check رو اجرا میکنه و یکی یکی راننده را خبر میکنه
هر کدوم که رد میکنن به طور خودکار صفحه رفرش میشه و و اطلاعات ارسال میشه برا راننده بعدی
و دوباره اطلاعات اردر به صفحه ویو فرستاده میشه اگر راننده تایید کرده باشه ادرد accep =1 میشه و اطلاعات نشون داده میشه در غیر این صورت accept = 0 است و دوباره به صفحه مورد نظر ریدایرکت میشه
اول اینکه شما وقتی به صورت Localhost آدرس دهی میکنی بعدا که پروژه رو آپلود کردی دیگه Localhost معنی نداره
دوم اینکه کاربردlocation.href اینجا نیست. به جای location.href باید درخواست Ajax بفرستی
سوم هم توی اکشن ب جای View باید Json برگردونی
lgo@ من تموم این کارا کردم باز نمیتونم
شما یه کد ساده ک اینکار رو بکنه دارین؟
فقط با ایجکس مطالب بخونه نه ساده که با retirn view انجام میدیم
خب شما وقتی بش میگی window.href یعنی میخوای که صفحه عوض شه!
شما این امکان رو به راحتی می تونی با $.ajax و یا $.post پیاده سازی کنی
خیلی سادس
برای نمونه کد ها هم میتونی سری به سایت اصلی jquery بزنی
در کل شما یه $order->id رو میفرستی به کنترلر و بعد از چک شدن فقط return میکنی بدون نمایش ویو!
بعدش json دریافت شده رو تحلیل میکنی در هون صفحه
این کد رو برات آماده کردم
ازش استفاده کن
<script>
function getDetail(order_id)
{
$.ajax({
type: "GET",
url: "site.com/order/{{ $order->id }}",
dataType : 'json',
success: function(data)
{
// انجام عملیات مورد نظر در صورت موفقیت
},
error : function(data)
{
// انجام عملیات مورد نظر در صورت ارور و یا نبود جواب درست
}
});
return false;
}
</script>
@mratwan
با تشکر از شما
من اینها رو نوشتم
<input type="text" id="order">
نتیجه این است :
@if($order->accept == 1)
<h1>اردر ما یک است</h1>
@elseif($order->accept == 2)
<h2>اردر ما 2 است</h2>
@elseif($order->accept == 3)
<h3>اردر ما 3 است</h3>
@endif
<script src="/js/app.js"></script>
<script>
setInterval(getDetail,5000);
function getDetail(order_id)
{
$.ajax({
type: "GET",
url: "http://localhost:8000/check/{{$order->id}}",
dataType : 'json',
success: function(data)
{
$('#order').val(data.accept);
},
error : function(data)
{
}
});
}
</script>
و در کنترلر
public function index()
{
$order = Order::find(1);
return view('index',compact('order'));
}
public function check($id){
$order = Order::find($id);
return Response::json($order);
// return view('index',compact('order'));
}
اما حالا میتونم مقدار order را داخل input بگیرم و نمیتونم توی php چک کنم
باید چیکار کنم که شروط ویو کار کنند ؟
وقتی می خواهی به صورت ایجکس کار کنی فقط بار اول کد های php درون ویو کار میکنه یعنی فقط یک بار بعد از رفرش مرورگر حالا بعد از این اجرا بقه کار ها رو باید با جاوا اسکریپت انجام بدی . توی تابع success همون جایی که order را گرفتی یک شرط قرار بده و تگ های h1 , h2 , h3 را با توجه به اون مخفی کن یا نمایش بده . یا اینکه کلا تک رو با جاوا اسکریپت بساز و به صفحه اضافه کن
خوب فقط یک المنت h1 نیاز داری.
برای اینکار برای همونطوری که مقدار input رو تغییر دادی باید مقدار المنت h1 رو هم عوض کنی.
$("h1").innerText=data.accept
البته کنترول و انجام این کارها هم اشتباهه هم وقت گیر
بهتره از یکی از فریم ورک های Angular و Vue و یا React استفاده کنی که خودشون تغییرات رو رهگیری میکنند.
توی تابع ajax هم type رو POST بزار.
دوستان به این سادگی که شما میگید نیست
من دارم روی یک پروژه بزرگ کار میکنم
قراره اگر aacept = 1 شد یک سری مشخصات بیاد
اگر 2 شد یک سری دیگه
اگه 3 شد یک سری دیگه
و ...
ولی برای سوال پرسیدن و اینکه شما گیج نشید این کار رو کردم
من بر اساس هر وضعیت یک ویو رو باید لود کنم
مشکل اینجاست که نمیشه متغیر جاواسکریپت رو ریخت توی php
شما وقتی داری اطلاعاتت رو با ایجکس درخواست میکنی از اون url دیگه نیازی نیست که دوباره تو لاراول بش بگی اگه این بو د و اگه اون بود اون کارو کن
باید در قسمت success جاوا اسکریپت وقتی اطلاعات رو میگیره براش شرط بذاری
function getDetail(order_id)
{
$.ajax({
type: "GET",
url: "site.com/order/{{ $order->id }}",
dataType : 'json',
success: function(data)
{
var order = JSON.parse(data);
if(order->name == 1)
{
$("#YourTag").html("H1 is selected");
// or
$("#YourInput").val("H1 Value");
}
},
error : function(data)
{
// انجام عملیات مورد نظر در صورت ارور و یا نبود جواب درست
}
});
return false;
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟