Ajax调用PHP服务跨域[重复]

Posted

技术标签:

【中文标题】Ajax调用PHP服务跨域[重复]【英文标题】:Ajax call PHP Service cross domain [duplicate] 【发布时间】:2014-08-23 16:33:04 【问题描述】:

我开始开发应用程序,但登录时遇到问题。

我有一个表单,其中包含对 php 服务的 Ajax 调用来验证用户,我将两个文件都上传到了我的服务器,它运行良好。我输入用户名和密码,进入 PHP 文件并验证用户,到目前为止一切顺利。

问题是这两个文件将位于不同的服务器中。现在我将 PHP 文件托管在我的服务器上,并且 form/ajax 调用 localhost 并且它不起作用。

代码如下:

PHP:

<?php
header('Content-type: application/json');
$server = "localhost";
$username = "****";
$password = "****";
$database = "*****";

$con = mysql_connect($server, $username, $password) or die ("Error: " . mysql_error());

mysql_select_db($database, $con);

$user = mysql_real_escape_string($_POST["user"]);
$pass = mysql_real_escape_string($_POST["pass"]);

$result = mysql_query("SELECT * FROM Usuarios WHERE IdUsuario = '" . $user . "' AND Clave = '" . $pass . "'");

$numResults = mysql_num_rows($result);

echo $numResults;

mysql_close($con);
?>

JS:

$( document ).ready(function() 

    $('form').submit(function(event)
        event.preventDefault();

        var user = $(this).find("#user").val();
        var pass = $(this).find("#pass").val();

        $.ajax(
            type: 'POST',
            crossdomain: true,
            data: 'user=' + user + '&pass=' + pass,
            url: 'http://www.url.com/login.php',
            success: function(data)
                if(data == 1)
                    alert("YES!");    
                else
                    alert("NO");
                
            ,
            error: function()
                alert('Error');
            
        ); 
        return false;
    );
);

我也尝试过使用 dataType: "json" 和 "jsonp"

【问题讨论】:

您在 PHP 中使用过时的 MySQL 系列 - 请查看 PDO 或 MySQLi。此外,以纯文本形式存储密码也不是一个好主意。当您说“它不起作用”时,请提供更多详细信息 - 什么都没有回来?还是总是“不”回来? 请不要在数据库中以纯文本形式存储密码...顺便说一句,您的代码容易受到 sql 注入的影响... 感谢您的建议,我会这样做的。它总是涉及到 ERROR 回调 【参考方案1】:

你需要改变

    data: 'user=' + user + '&pass=' + pass,

    data: user : user, pass : pass,

【讨论】:

@Agustín:您能否提供更多信息作为回复?如果您不这样做,那么 Orion(或其他任何人)可能不确定如何进一步帮助您。您是否检查过浏览器网络面板中的 AJAX 操作?

以上是关于Ajax调用PHP服务跨域[重复]的主要内容,如果未能解决你的问题,请参考以下文章

跨域 AJAX 调用 [重复]

Jquery ajax()跨域远程服务器在IE8中不起作用[重复]

使用 jQuery 和 AJAX 的跨域 PHP 调用

为啥不允许跨域 AJAX 调用?

如何发送跨域ajax请求[重复]

AngularJS ajax调用中的CORS错误[重复]