mehrdad70
4 سال پیش توسط mehrdad70 مطرح شد
9 پاسخ

ارسال فرم بصورت ajax در لاراول

سلام دوستان من میخام فرمم بصورت ایجکس ارسال شه و بدون رفرش شدن صفحه مقداری که ارسال کردم ایجاد بشه اما صفحه رفرش میشه و مروگر به این صورت بهم نمایش میده
توضیح تصویر رو وارد کنید
من نمیخام ریدایرکت بشه به صفحه ای میخام بدون رفرش اعمال بشه اما انجام نمیشه

<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');

ثبت پرسش جدید
حامد نیرومند
تخصص : برنامه‌نویس
@hamedniroomand 4 سال پیش مطرح شد
0

در بخش success داخل ajax ، اگر مقدار برگشتی از سمت سرور رو log کنید چنین اتفاقی نخواهد افتاد.
مقدار برگشتی از سمت سرور (عملیات با موفقیت انجام شد) رو باید به صورت alert به مخاطب نشون بدید.
اینکه فقط مقدار response رو در success قرار بدید باعث میشه که یک json‌ در مرورگر نمایش داده بشه (همین حالتی که الان اتفاق افتاده)


mehrdad70
@mehrdadroshanraee68 4 سال پیش مطرح شد
0

ببخشید من جاوا اسکریپت خیلی ضعیفم اینم واقعا با سرچ نوشتم میشه واضح تر توضیح بدید بهم
@hamedniroomand


saman
@saman1111 4 سال پیش مطرح شد
0

شما باید ببینید چطور میخواین پیغام عملیات موفقیت آمیز رو به کاربر بدید.
یا alert بدید یا جایی توی DOM المنتی رو اضافه کنید یا هر چیز دیگه، همون رو توی success بنویسید.


ali254
@ali254 3 سال پیش مطرح شد
0

سلام ، در مورد اون قسمت success که در فایل blade هست ، یک توضیح بدید بیزحمت...
من پاسخ یک درخواست ajax رو از کنترلر فرستادم به فایل blade.php ، حالا میخوام اون رو داخل اش نمایش بدم ، نمی دونم چجوری باید اینکارو انجام بدم...دیدم تو کدها ، اون قسمت success اینکارو انجام میده ولی نتونستم ازش استفاده کنم.ضمنا با جاوا اسکریپت میخوام اینکارو بکنم نه jquery ، تشکر


مهدی
تخصص : Backend Developer
@mahdidv 3 سال پیش آپدیت شد
1

@niknami206 هرجا میخوایین پیغام رو نمایش بدین یک تگ p یا هرچی با ایدی مثلا err قرار بدین
بعد در فانکشن succsess اینو بنوییسی


Document.getElementById('err').innerText=response.success

ali254
@ali254 3 سال پیش آپدیت شد
0

@مهدی تشکر ، یعنی من اگر در کنترلر کد زیر رو بنویسم:

        return response()->json(['success' => 'عملیات با موفقیت انجام شد']);

حالا با کد شما می تونم به مقدار response در فایل blade دسترسی داشته باشم؟ یعنی مثل کد زیر:

        console.log(response.success);

مهدی
تخصص : Backend Developer
@mahdidv 3 سال پیش مطرح شد
ali254
@ali254 3 سال پیش مطرح شد
0

@مهدی
تشکر


ali254
@ali254 3 سال پیش آپدیت شد
0

@مهدی

من از همین کد استفاده کردم :

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 رو تعریف کنم ولی نمیدونم چجوری.
مشکل کجاست ؟ تشکر


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام