سلام دوستان من میخام فرمم بصورت ایجکس ارسال شه و بدون رفرش شدن صفحه مقداری که ارسال کردم ایجاد بشه اما صفحه رفرش میشه و مروگر به این صورت بهم نمایش میده
من نمیخام ریدایرکت بشه به صفحه ای میخام بدون رفرش اعمال بشه اما انجام نمیشه
<form action="{{route('attributes.store' , ['GroupId' => $attributeGroup->id])}}" id="submit-form" method="post">
@csrf
<div class="form-row">
<div class="form-goup col-md-4">
<input type="text" name="name" required class="form-control" id="name">
</div>
<div class="form-goup col-md-4">
<input type="text" name="order" class="form-control" id="order">
</div>
<div class="form-goup col-md-4">
<button type="submit" class="btn btn-danger">ثبت ویژگی</button>
</div>
</div>
</form>
@section('js')
<script>
$('#submit-form').on('submit' , function(event){
event.preventDefault();
name : $('#name').val();
order: $('#order').val();
$.ajax({
url : "attributeItems/{AttributeId}",
type: "POST",
data: {
"_token" : {{ csrf_token()}},
name:name,
order: order,
},
success:function(response){
response.success
},
});
});
</script>
@endsection
public function store($GroupId , Request $request)
{
Attribute::create([
'name' => $request->name,
'order' => $request->order,
'attribute_group_id' => $GroupId
]);
return response()->json(['success' => 'عملیات با موفقیت انجام شد']);
}
Route::post('attributeItems/{AttributeId}' , 'AttributeItemController@store')->name('attributeItems.store');
در بخش success داخل ajax ، اگر مقدار برگشتی از سمت سرور رو log کنید چنین اتفاقی نخواهد افتاد.
مقدار برگشتی از سمت سرور (عملیات با موفقیت انجام شد) رو باید به صورت alert به مخاطب نشون بدید.
اینکه فقط مقدار response رو در success قرار بدید باعث میشه که یک json در مرورگر نمایش داده بشه (همین حالتی که الان اتفاق افتاده)
ببخشید من جاوا اسکریپت خیلی ضعیفم اینم واقعا با سرچ نوشتم میشه واضح تر توضیح بدید بهم
@hamedniroomand
شما باید ببینید چطور میخواین پیغام عملیات موفقیت آمیز رو به کاربر بدید.
یا alert بدید یا جایی توی DOM المنتی رو اضافه کنید یا هر چیز دیگه، همون رو توی success بنویسید.
سلام ، در مورد اون قسمت success که در فایل blade هست ، یک توضیح بدید بیزحمت...
من پاسخ یک درخواست ajax رو از کنترلر فرستادم به فایل blade.php ، حالا میخوام اون رو داخل اش نمایش بدم ، نمی دونم چجوری باید اینکارو انجام بدم...دیدم تو کدها ، اون قسمت success اینکارو انجام میده ولی نتونستم ازش استفاده کنم.ضمنا با جاوا اسکریپت میخوام اینکارو بکنم نه jquery ، تشکر
@niknami206 هرجا میخوایین پیغام رو نمایش بدین یک تگ p یا هرچی با ایدی مثلا err قرار بدین
بعد در فانکشن succsess اینو بنوییسی
Document.getElementById('err').innerText=response.success
@مهدی تشکر ، یعنی من اگر در کنترلر کد زیر رو بنویسم:
return response()->json(['success' => 'عملیات با موفقیت انجام شد']);
حالا با کد شما می تونم به مقدار response در فایل blade دسترسی داشته باشم؟ یعنی مثل کد زیر:
console.log(response.success);
@مهدی
من از همین کد استفاده کردم :
console.log(response.success);
داخل مرورگر و در تب network ، وضعیت 200 رو دریافت می کنم که نشون میده ظاهرا مشکلی نیست ولی در تب console ، خطای زیر رو دریافت می کنم
Uncaught ReferenceError: response is not defined
کد جاوا اسکریپت که باهاش درخواست AJAX ارسال می کنم:
<body>
<button type="button" onclick="loadDoc()">Request data</button>
<span id="err">aliiiiiiiiiiiiiiii</span>
<head>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// document.getElementById("demo").innerHTML = this.responseText;
console.log(response.success);
}
};
xhttp.open("GET", "rout5", true);
xhttp.send();
}
</script>
</head>
</body>
روت:
Route::get('rout5',[AjaxController::class,'AjaxController']);
ظاهرا باید response رو تعریف کنم ولی نمیدونم چجوری.
مشکل کجاست ؟ تشکر
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟