JQuery AJAX ответ от переменной из целевого файла - PullRequest
0 голосов
/ 16 сентября 2010

Я отправляю имя пользователя и пароль в некоторый целевой файл (auth.php), используя jquery ajax.В файле auth.php у меня есть много переменных «var a1», «var b1».

В случае успешной аутентификации переменная «a1» устанавливается на pass (a1 = 'pass').

Моя проблема в том, как получить доступ только к переменной «a1» из «auth.php» с помощью ответа ajax.

Небольшой код ниже:

$.ajax({
          url: "auth.php", 
          type: "POST",
          data: "dataString",
          success: function (txtBack) { 

           -- here i need to check the variable "a1" from auth.php
          }

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 16 сентября 2010

Ваш фрагмент JS ...


$.ajax({
  url: "auth.php", 
  type: "POST",
  data: "dataString",
  dataType: "json",
  success: function (txtBack) { 
    // here i need to check the variable "a1" from auth.php
    alert(txtBack.a1);
  }
});

Фрагмент PHP ...


echo json_encode(array('a1'=>'whatever'));
0 голосов
/ 16 сентября 2010

Вы должны использовать jQuery + JSON комбинацию примерно так:

login.php:

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="jsFile.js"></script>

<form action='auth.php' method='POST' class='ajaxform'>
 <input type='text' name='username' value='TestUsername'>
 <input type='password' name='password' value='TestPassword'>
 <input type='submit' value='submit'>
</form>

auth.php:

<?php
      if( $_POST['username'] and $_POST['password'] are authenticated ) {
         $arr = array( 'a1' => "Pass" );
      } else {
         $arr = array( 'a1' => "Fail" );
      }
      echo json_encode( $arr );
?>

jsFile.js:

jQuery(document).ready(function(){

    jQuery('.ajaxform').submit( function() {

        $.ajax({
            url     : $(this).attr('action'),
            type    : $(this).attr('method'),
            dataType: 'json',
            data    : $(this).serialize(),
            success : function( data ) {
                        for(var id in data) {
                            alert( data[id] ); // It will alert all json outputs
                        }
                      }
        });

        return false;
    });

});
0 голосов
/ 16 сентября 2010

Если вы возвращаете объект, вам нужно сослаться на него.

txtBack.a1 или когда-нибудь я видел txtBack.d.a1.

Хотя, если вы возвращаете объект вроде, а это c #, то это;

вернуть новый MyObject {a1 = 10};

тогда я думаю, что вам нужно сделать либо txtBack.MyObject.a1, либо txtBack.d.MyObject.a1

Вы также можете рассмотреть возможность возврата результата в виде объекта JSON.

Также используйте добавление FireBug Firfox, чтобы увидеть, что возвращается.

0 голосов
/ 16 сентября 2010

при условии, что ваш php возвращает объекты JSON, т.е. {'a1' : 100, 'a2' : 200}

ваша функция обратного вызова просто получит доступ к a1 через txtBack.a1

Вы также можете использовать функцию PHP json_encode (), чтобы преобразовать ассоциативный массив в json, а затем отобразить его

ваш php скрипт:

<?php
$arr = array ('a1'=>1,'a2'=>2,'a3'=>3);
echo json_encode($arr);
?>

Вот руководство для json_encode () http://php.net/manual/en/function.json-encode.php

И если вы не знакомы с JSON, посмотрите Википедию: http://en.wikipedia.org/wiki/JSON

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