JQuery Cross Domain AJAX Связь с PHP - PullRequest
       0

JQuery Cross Domain AJAX Связь с PHP

0 голосов
/ 06 декабря 2010

Я пытаюсь создать простую систему входа в систему, которая будет иметь формы и все в одном домене (назовем его Домен A) и файлы PHP в другом домене (Домен B). Зачем? Просто потому, что домен A более надежен, но не поддерживает PHP. Я совершенно новичок во всем этом AJAX, поэтому в настоящее время я использую ресурсы, которые я нашел в Интернете.

JQuery и Forms его часть на Домене A , как показано ниже:

<form id="submit" method="post">
<fieldset>
<legend>Enter Information</legend>  

<label for="fname">Name:</label>  
<input class="text" id="fname" name="fname" size="20" type="text" />  

<label for="lname">Email:</label>  
<input class="text" id="lname" name="lname" size="20" type="text" />  

<button class="button positive"> Submit </button>  </fieldset>
</form>
<script>
$(document).ready(function(){  
    $("form#submit").submit(function() {  
    // we want to store the values from the form input box, then send via ajax below  
    var fname     = $('#fname').attr('value');  
    var lname     = $('#lname').attr('value');  
        $.ajax({  
            type: "POST",  
            url: "http://domainB.com/somefolder/ajax.php",  
            data: "fname="+ fname +"& lname="+ lname,  
            success: function(){  
                $('form#submit').hide(function(){$('div.success').fadeIn();});  

            }  
        });  
    return false;  
    });  
});  
</script>

Обратите внимание, что 'lname' и 'fname' будут представлять имя и адрес электронной почты вместо имени и фамилии соответственно.

Код PHP на Домен B :

<?php  

    // CLIENT INFORMATION  
    $uname        = htmlspecialchars(trim($_POST['fname']));  
    $umail        = htmlspecialchars(trim($_POST['lname']));  
  $uip = 12345;
  $usecret = "secret";
//Mysql
$con = mysql_connect("mysql.domainB.com","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
//Connect
mysql_select_db("login_db", $con);
//Insert user details irrespective of whether the user is a member or not to make a log kind of thing
mysql_query("INSERT INTO log_data (Name, Email, IP_ADDRESS, Secret)
VALUES ('$uname', '$umail', '$uip', '$usecret')");

//Now check if the user is a subscriber or not


//   mysql_query("SELECT Email, Secret FROM login_data WHERE Email='$umail' AND Secret="secret"");
//I don't know the code to check if the user has logged in correctly
//This is where I need you to help me
//I need to check if the user has logged in correctly, if yes, then return a message saying //success which should be caught by Jquery and displayed as an Alert, or something
//If the user login failed, this php code should return a failure message which again should be caught by Jquery on Domain A and displayed as an alert in the least.


mysql_close($con);
//end Mysql

?>  

На что следует обратить внимание - в базе данных login_db есть две таблицы - log_data , в которых хранится информация журнала, и login_data , в которой хранятся имена пользователей и пароли. Переменная $ secret хранит пароль пользователя.

Вставка log_data работает как талисман, но это login_data, который меня беспокоит. Любая помощь приветствуется. Спасибо!

Imag

Ответы [ 3 ]

0 голосов
/ 06 декабря 2010

вы должны использовать тип данных jsonp

$.ajax({
            url: url, 
            async: true, 
            type: "GET", 
            dataType: "jsonp", 
            success: function(json){
                // handle success response here
            },
            error: function(){ alert("x.err"); }
        });
0 голосов
/ 06 декабря 2010

Просто попробуйте следующий код ... он также должен позаботиться о междоменной проблеме

var dataString = "fName=" + $('#fname').attr('value') + "&lname=" + $('#lname').attr('value');
                var url = "http://demo/exampe.php?" + dataString;


              $.getJSON(url + "&jsoncallback=?", function(data){

                alert("success");

Конструкция объекта jsonp должна быть такой, как показано ниже.

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}



                });
0 голосов
/ 06 декабря 2010

Вы не можете выполнять междоменный ajax из-за той же политики происхождения .

Вы можете сделать jsonp кросс-домен.Ее как с JQuery: документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...