2016-01-17 30 views
1

每當我發送一個發佈請求到'任務/添加'我希望用戶返回到一個新的頁面,但我所得到的是純HTML文本在彈出。Laravel 5.2後路線返回純HTML文本

Route.php代碼

Route::post('tasks/add', function() { 
    return view('secrets'); 
}); 

這是我的Ajax請求:

$("#frm").submit(function(e){ 
      e.preventDefault(); 
      var customer = $("input[name=customer]").val(); 
      var details = $("input[name=details]").val(); 
      var dataString = 'customer='+customer+'&details='+details; 

      $.ajax({ 
       url: "tasks/add", 
       type:"POST", 
       beforeSend: function (xhr) { 
        var token = $('meta[name="csrf_token"]').attr('content'); 

        if (token) { 
          return xhr.setRequestHeader('X-CSRF-TOKEN', token); 
        } 
       }, 
       data : dataString, 
       success:function(data){ 
        console.log(dataString); 
        alert(data); 
       },error:function(){ 
        alert("error!!!!"); 
       } 
      }); //end of ajax 

      }); 

     }); 

有人已經收到了這個問題?

+0

你能證明你收到什麼樣的數據? –

+0

您正在將響應放在'alert()'中,因此html只顯示爲html文本。你不想那樣,你想重定向到一個新的頁面,而不是提醒結果 – tam5

+0

這只是我試圖加載的頁面的HTML。 @tam我從ajax請求中刪除了警報,但現在這個帖子什麼都不做。 當我看我的帖子回覆,它只是一個純html文件,但我想要爲用戶加載html。 – Mocrosoft

回答

0

您正在使用Ajax調用Route方法。因此,當Route::post(...)返回視圖'secrets'時,它將其返回到Ajax方法並變爲data變量。在您的Routes文件中說return並不奇怪地意味着重定向到某個視圖,它就像任何其他返回值的函數一樣。

您目前有alert(data),只是說要警惕data所持有的東西,在這種情況下,這是您視圖的html文本。

相反,取出alert()並把

window.location.replace('<path/to/secrets>') 

重定向到你想成功後的頁面。

假設你的路由文件中有這樣的:

Route::get('/secrets', function() { 
    return view('secrets'); 
}); 

可以說

window.location.replace('/secrets') 
+0

這確實是一個解決方案,使其工作,但我想保持清潔,並通過laravel route.php處理我的重定向。基本上,我希望我的用戶在帖子完成後重定向到「祕密」頁面。這可能嗎? – Mocrosoft

+0

感謝您的建議,但它會將純html重新返回給我的ajax請求。無論如何,我非常感謝你幫助我。我會通過ajax保持我的重定向:) – Mocrosoft

+0

如果我想到別的東西,我會讓你知道,但我認爲這是做到這一點的方法。一般來說,我發現在Laravel和Ajax一起工作有時會變得有點混亂,就是這樣。 – tam5