2016-08-26 3 views
0

In meinem Projekt habe ich mit etwa solchen Code über eine Taste:Rails jQuery 'post' Probleme

<a class="start btn" href=start_process_path(@process.id) id="start"> 
    <i fa class='play'></i> 
</a> 

und ein jquery Event-Listener haben dafür:

$('.start').click((function(_this) { 
    return function(e) { 
     var params; 
     params = $('form', _this.previewJq).serializeArray(); 
     $.post(e.target.href, params, function(json) { 
     if (json.error) { 
      return alert(json.error); 
     } 
     }); 
     return false; 
    }; 
    })(this)); 

In meiner routes Datei Ich habe solche Zeilen:

resources :processes do 
    patch 'start', on: :member 
end 

Das Problem ist, dass manchmal, wenn ich diesen Knopf klicke, ich mit nichts reagiere. Wenn ich die Konsole in Chrome öffne oder in den Protokollen schaue, kann ich sehen, dass der 404-Fehler besagt, dass ich versuche, eine Postanforderung an die Seite zu senden, die diese Schaltfläche hat. Wenn ich Quellen im Chrome-Browser und nur einen Haltepunkt in einer Zeile mit einer Postanforderung öffne, funktioniert das normalerweise einwandfrei. Aber sobald ich es geschafft habe, Situation zu erfassen, wenn es traurig ist, dass e.tagret.href Wert undefined Wert hat (oder etw so ähnlich). Was kann der Grund dafür sein, so zu sein? Warum kann jquery den href-Parameter nicht korrekt erhalten?

Vielen Dank im Voraus!

+1

Es fehlt ein Zitat in "$ ('. Start)". Ist das ein Tippfehler? –

+0

@ HithamS.AlQadheeb Ja, sicherlich ist es ein Tippfehler! Fest. Danke. Das war kein Grund für ein Problem :) – Ngoral

+0

Sie müssen überprüfen, ob das Element HREF-Werte hat oder nicht oder versuchen, undefined zu überprüfen. –

Antwort

0

Das Problem war Klicken auf i Element verursacht e.target mit es, keine Taste im Inneren. Seit ich mit coffeescript, Kommentar von @Vanitas und this Antwort half mir.

Ich musste nur e.target.href mit e.currentTarget.href ersetzen.