HTTP状态码0可能是跨站脚本?

时间:2016-04-30 13:43:48

标签: php jquery ajax xmlhttprequest http-status-codes

我有一个$.ajax在php中运行文件并传递一个变量(电子邮件地址)。该文件效果很好,但xhr.status0

这是代码:

    $.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');                        
                }
            }               
        });

这个file.php,独立xhr.status,工作正常,它会在我的简报中添加用户。所以我不认为这个文件是问题所在.. 它有" 0755"权限文件,如果我使用浏览器运行file.php的网址,则不会出现问题。

问题是xhr.status0,我不明白为什么...... 我读过这可能是"跨网站脚本"但我不知道我的情况是否可能。我还尝试更改form中的标记div,但没有。

我还添加了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(我确信101%的api没有问题)

我希望你能帮助我,非常感谢,对不起我的英语

1 个答案:

答案 0 :(得分:1)

我认为问题在于,当xhr.status作为完整回调中的第二个参数传递给您时,您正在检查status。试试这个:

$.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');
});

控制台语句仅用于调试目的,可以删除。