2016-04-20 13 views
4

Verwenden Sie Laravel 4.2 und versuchen, Daten mit Ajax zu aktualisieren, aber in Ajax Redirect URL nicht für mich arbeiten. Weil ich URL verwende: Aktion wie,URL :: Aktion funktioniert nicht in Jquery Ajax

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    url : "store", 
    data: { title: postTitle['post-title']['value'], body: postContent['post-body']['value'] }, 
    success: function(data) { 
     if(data.success === false) 
     { 
      $('.error').append(data.message); 
      $('.error').show(); 
     } else { 
      $('.success').append(data.message); 
      $('.success').show(); 
      setTimeout(function() { 
       window.location.href = "{{ URL::action('[email protected]') }}"; 
      }, 2000); 
     } 
    }, 
    error: function(xhr, textStatus, thrownError) { 
     alert('Something went wrong. Please Try again later...'); 
    } 
}); 

ich weiß nicht, warum es nicht funktioniert. Bitte hilf mir.

+0

Hinweis: Sie benötigen eine Route zu dieser Controller-Aktion – madalinivascu

+0

@madalinivascu wie Controller-Aktion in Route in dieser Situation hinzufügen –

+0

siehe Antwort unter – madalinivascu

Antwort

0

eine Route in der Routendatei hinzufügen:

Route::get('post','[email protected]'); 

Änderung js zu:

setTimeout(function() { 
       window.location = "<?php echo URL::action('[email protected]') ?>"; 
      }, 2000); 

oder:

setTimeout(function() { 
        window.location = "<?php echo action('[email protected]') ?>"; 
       }, 2000); 
+0

Es funktioniert nicht, es gibt URL wie folgt zurück: http: // localhost/editorlara4/öffentliche/posts /% 7B% 7B% 20URL :: aktion% 28'PostsController @ index '% 29% 20% 7D% 7D' –

+0

tun Sie haben Blade in der Vorlage aktiviert? – madalinivascu

+0

Ich weiß nicht, Blade aktiviert oder nicht. Wie zu überprüfen, ob es aktiviert ist oder nicht –

2

Sie benötigen einen Weg in Ihre Routen-Datei hinzuzufügen:

Route::post('post', '[email protected]'); 

Wenn Sie jedoch CSRF aktiviert haben, müssen Sie auch den CSRF-Code veröffentlichen. Sie können dies tun, indem Sie dies in Ihrem Post "Daten" hinzufügen.

... 
url : "{{ url('store') }}", 
Data: data: { title: postTitle['post-title']['value'], body: postContent['post-body']['value'] }, _token: {{ csrf_token() }}, 
... 

Ich hoffte, das funktioniert für Sie!

1

Was machst du hier ist eine wirklich schreckliche Praxis. Sie sollten niemals dynamisch erstellten JS-Code in einer echten App verwenden, wenn Sie die Wahl haben.

Vor allem, Sie sind eng Kopplung JS und PHP-Code (Art von Anti-MVC). Anfragezeit erhöht sich. Es ist schwieriger, die App zu pflegen. Sie sind nicht in der Lage vorbereitet (minimierte) JS usw.

Why generating JS with PHP is a bad practice

hier zu verwenden, sollten Sie erstellen URL manuell:

window.location.href = "/post/something"; 

Gerade Route erstellen und verwenden Sie es ohne URL::

Route::post('post/something', '[email protected]'); 
+0

Was passiert, wenn er die Route für diese Controller-Aktion ändern möchte, was passiert dann mit der URL?, warum nennst du es eine * schreckliche Praxis * – madalinivascu

+0

Er wird gehen und URL manuell ändern. Aktualisierter Beitrag erzählt, warum es eine schlechte Übung ist. –