第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 ajax 調(diào)用時(shí)從 laravel 控制器函數(shù)返回視圖?

如何在 ajax 調(diào)用時(shí)從 laravel 控制器函數(shù)返回視圖?

PHP
慕妹3146593 2023-09-15 10:19:39
我正在開(kāi)發(fā)一個(gè)書(shū)店項(xiàng)目,可以將書(shū)籍添加到購(gòu)物車(chē),用戶(hù)可以選擇許多書(shū)籍將其添加到購(gòu)物車(chē)。當(dāng)用戶(hù)單擊按鈕時(shí)Add to Cart,我將所選書(shū)籍的 ID 添加到名為 的 JS 數(shù)組中cart。當(dāng)所有選定的書(shū)籍都添加到購(gòu)物車(chē)時(shí),我想將<a>標(biāo)簽與ajax調(diào)用鏈接起來(lái),該調(diào)用將命中控制器函數(shù)的url并將JScart數(shù)組對(duì)象發(fā)送到控制器函數(shù),然后在控制器函數(shù)中,我想返回視圖到瀏覽器,我不希望控制器函數(shù)將響應(yīng)返回到 ajax 調(diào)用,而是希望將視圖返回到瀏覽器。以下是將所選書(shū)籍的 ID 添加到cartJS 數(shù)組的 JS 函數(shù):function addToCart(id){if(! cart.includes(id) ) cart.push(id);cartLength.html(cart.length);$('#successCart'+id).html('Book added to cart.');}  下面是<a>調(diào)用ajax函數(shù)的標(biāo)簽,函數(shù)名為showCart():<a href="#" onclick="event.preventDefault(); showCart();">  <i class="fa fa-shopping-cart"></i>  <span id="cartLength"></span></a>  這是showCart()具有ajax代碼的函數(shù):function showCart(){$.ajaxSetup({      headers: {        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')      }    });$.ajax({        url:"cart",        method:'post',        data:{cart:cart},        dataType: 'html'  }) .done(function(msg){  }); .fail(function(msg){    alert(msg.responseJSON.errors); });}  這是控制器函數(shù) - 我希望此函數(shù)直接將視圖返回到瀏覽器,而不將其發(fā)送回 ajax 調(diào)用:public function showCart(Request $request){    return view('cart', ['cart' => $request->cart ]); // this should be returned to the browser and not to the ajax call}  這是控制器功能的路線:Route::post('/cart', 'HomeController@showCart')->name('home.cart');  編輯:我已經(jīng)通過(guò)以下技巧暫時(shí)解決了這個(gè)問(wèn)題,但這不是永久的解決方案:調(diào)用showCart()函數(shù)將數(shù)組變量ajax發(fā)送到控制器后,我使用以下邏輯將書(shū)籍存儲(chǔ)在會(huì)話變量中,該會(huì)話變量存儲(chǔ)在數(shù)組中:cartjslaravelidscartpublic function showCart(Request $request){    session()->put('cart_books', Book::whereIn('id', $request->cart)->get());     session()->save();    return "success";}  將查詢(xún)結(jié)果存儲(chǔ)在會(huì)話變量中后,我創(chuàng)建了另一GET條路由,/cart如下所示:Route::get('/cart', 'HomeController@viewCart');  然后在ajax調(diào)用成功后post,我用/cart如下get方法調(diào)用:.done(function(msg){    console.log('calling cart');    location.href = "cart"; // Here I call the `/cart` with `get` method which will hit the `viewCart()` function of HomeController which will return the view back to the browser along with the results that were stored in the session variable.  })  我希望控制器函數(shù)將視圖返回到瀏覽器而不將其返回到 ajax 調(diào)用,提前感謝任何幫助。
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以通過(guò)渲染并返回控制器內(nèi)的視圖來(lái)從 ajax 調(diào)用返回原始 html,如下所示:

return view('cart', ['cart' => $request->cart])->render();

這將返回原始 HTML,您可以進(jìn)一步使用它。但是,從ajax返回HTML并不是一個(gè)好方法,您可以從控制器返回JSON并根據(jù)JSON數(shù)據(jù)在前端渲染視圖。


查看完整回答
反對(duì) 回復(fù) 2023-09-15
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

正如其他人所說(shuō),你可以使用


return view('cart', ['cart' => $request->cart])->render();

在你的 jQuery 中做


.done(function(response){

    document.write(response);

});

或者您可以返回應(yīng)向用戶(hù)顯示其內(nèi)容的鏈接,并在完成方法中重定向用戶(hù)。所以在你的后端你會(huì)有


return route('cart', ['cart' => $request->cart]);

在你的前端你會(huì)有


.done(function(response){

    location.href = response;

});


查看完整回答
反對(duì) 回復(fù) 2023-09-15
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

在控制器函數(shù)中只需添加渲染方法,如下所示


public function showCart(Request $request)

{

   return view('cart', ['cart' => $request->cart ])->render();

}  

對(duì)于js:


$.ajax({

method: 'POST', // Type of response and matches what we said in the route

url: '{{ route('home.cart') }}', // This is the url we gave in the route

data: {'cart' : cart}, // <-- this is your POST data

success: function(response){ // What to do if we succeed

    console.log(response);

},

error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail

    console.log(JSON.stringify(jqXHR));

    console.log("AJAX error: " + textStatus + ' : ' + errorThrown);

}

});


查看完整回答
反對(duì) 回復(fù) 2023-09-15
  • 3 回答
  • 0 關(guān)注
  • 177 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)