2016-04-30 7 views
0

Ich habe eine $.ajax, die Datei in PHP ausführen und eine Variable (E-Mail andress) übergeben. Die Datei funktioniert sehr gut, aber die xhr.status ist 0.HTTP-Statuscode 0 ist möglicherweise Cross-Site-Scripting?

Dies ist der Code:

$.ajax({ 
      type: 'POST', 
      url: 'file.php', 
      data: { email: destinatario }, 
      complete: function(xhr,status){ 
      $('#momentaneo, #force').remove(); 
      alert(xhr.status); 
       if(xhr.status === 200){ 
        alert('ok');       
       } 
       else{ 
        alert('no');       
       } 
      }    
     }); 

Diese file.php unabhängig xhr.status, funktioniert gut und es einem Benutzer zu meinem Newsletter hinzuzufügen. Also ich glaube nicht, dass diese Datei das Problem ist. Es hat "0755" Erlaubnis Dateien und wenn ich die URL von file.php mit Browser laufen gibt es keine Probleme.

Das Problem ist, dass xhr.status ist 0 und ich verstehe nicht, warum ... ich das lesen konnte „Cross-Site-Scripting“ sein, aber ich weiß nicht, ob possibile in meinem Fall ist. Ich habe auch versucht, Tag form in div aber nichts zu ändern.

Ich füge auch die file.php:

<?php 
include('wrapper.php'); 
$apikey = "76a21109637d7391d1e68e9680e6"; 
voxmail_init($apikey); 
voxmail_user_subscribe(array('mail' => $_POST['email'],'privacy' => 1),$_SERVER['REMOTE_ADDR']); 

$header = "Content-type: text/html"; 
header($header); 
print('<b>ok</b>'); 
?> 

voxmail API von Newsletter-Service sind (ich bin sicher, dass 101% api sind nicht Problem)

ich hoffe, Sie können mir helfen, danke viel und sorry für mein Englisch

Antwort

1

Ich denke, das Problem ist, dass Sie xhr.status überprüfen, wenn status Ihnen als zweiter Parameter in Ihrem vollständigen Rückruf übergeben wird. Versuchen Sie stattdessen:

$.ajax({ 
    type: 'POST', 
    url: 'file.php', 
    data: { email: destinatario } 
}).always(function(){ 
    $('#momentaneo, #force').remove(); 
}).then(function(){ 
    console.log.apply(console, arguments); 
    alert('ok'); 
}, function(){ 
    console.warn.apply(console, arguments); 
    alert('no'); 
}); 

Die Konsole Anweisungen für Debugging-Zwecke nur dort sind und entfernt werden können.

+0

in der Konsole gibt es auch diese "Multiorigine blockiert Anfrage (Cross-Origin): das Kriterium der Herkunft Korrespondenz erlaubt nicht lesen von Remote-Ressource http: //www.example.comfile.php. Motiv: Header CORS" Access- Steuerung-Erlauben-Ursprung "mancante" – Borja

+0

@Borja könnten Sie uns Ihren serverseitigen Code zeigen, der diese Anfrage bearbeitet? Umleiten Sie den Client vielleicht als Antwort auf diese Anfrage an eine andere URL? – idbehold

+0

@ Borja macht nichts, ich sehe, dass Sie bereits den serverseitigen Code hinzugefügt haben. – idbehold

Verwandte Themen