2011-01-04 17 views
2

Ich habe eine Eingabe mit dem Zweck, ein Teil einer Suchmaschine, auf der ich jQuery verwenden, um die Suchzeichenfolge zu filtern, verbotene Zeichen so lange wie andere Dinge zu filtern. Kürzlich musste ich die URL der Website ändern und PHP verwenden, um eine Variable zu drucken, die die URL für AJAX-Anfragen anzeigen würde (wie ich es vorher getan habe, außer dass jetzt normale und AJAX-Anfragen andere URLs haben), und ich habe ein Problem gefunden Ich kann nicht herausfinden, was es ist.jQuery ajax nicht laden

Grundsätzlich funktioniert die Ajax-Anfrage nicht (keine Aktionen und keine Anfrage auf Firebug). Ich habe jeden möglichen Weg versucht (Deklaration in der Funktion, übergeben als Argument usw.), um meinem Skript die von mir gewünschte URL mitzuteilen, aber es funktioniert nur mit der alten URL (selbst die Ajax-Anfrage wird nie aufgerufen).

Also ich möchte, dass Sie es überprüfen und sehen, ob Sie etwas falsch finden.

Hier ist der Code:

$(function() { 

    $('form#search-form').submit(function(e) { search(e, acc); }); 
    $('a#search-submit').click(function(e) { search(e, acc); }); 

}); 

function search(e, l) 
{ 
    e.preventDefault(); 

    var t = $('#search-text input[name="search-text"]').val(); 
    //var l = $('#nav-ul li.sel a').attr('href'); 

    $.ajax({ 
     type: 'POST', 
     url: l+'format_search_string', 
     data: 's='+t, 
     cache: false, 
     dataType: 'json', 
     success: function(response) 
     { 
      if (response.status == 'true') 
       window.location = $('#search-submit').attr('href')+'/s:'+response.string; 
      else 
       jQuery.facebox('<p class="facebox-notice">Necessita preencher o campo da pesquisa</p>'); 
     } 
    }); 
} 

edit: "acc" ist eine Variable, die URL, wich druckt exacly enthält, was ich will, wenn ich es in Suche() aufrufen, Funktion, das einzige, was tut nichts ist die Ajax-Anfrage (wird überhaupt nicht aufgerufen). Wenn ich die alte URL verwende, funktioniert es, aber das Seltsame ist, dass mit der neuen URL zumindest der Ajax-Aufruf erfolgen sollte.

Der Code befindet sich alle im selben Server und in der gleichen Domäne und nichts wie geändert, nur die URL der Anfragen.

normale Anfrage:

http://category.domain.com/ 

Ajax-Anforderung:

http://www.domain.com/category 
+0

Ist der obige Code auf demselben Server gehostet, nur der Back-End-Code auf einen anderen Server verschoben? – ehudokai

+0

Woher kommt 'acc'? – lonesomeday

+0

@ehudokai & @lonesomeday, Beitrag aktualisiert – yoda

Antwort

2

klingen wie Sie aus einer anderen Domäne anfordern. Und das ist nicht erlaubt.

Schauen same-origin-policy

up erlaubt Nur JSONP für Cross-Site-Anfragen.

haben auch einen Blick auf einen anderen SO Frage/Antwort: Same Origin Policy - AJAX & using Public APIs

+0

Danke, war mir nicht bewusst, dass ich Anfragen von einer Subdomain zu anderen nicht tun konnte. Prost! – yoda

0

Wenn Sie Ihr Backend auf einen anderen Server verschoben. Versuchen Sie, Ihre Anfrage zu einem JSON-Typ zu ändern, und nicht nur zu JSON.

+0

nein, ich habe den Server nicht geändert – yoda