сделать ответ на стороне сервера с php на вызов jquery ajax - PullRequest
0 голосов
/ 05 июля 2011

Я пытаюсь реализовать классическую проверку доступности имени пользователя с помощью jquery и ajax.вот мой подход:

jquery, на стороне клиента:

$("#usrnameTBox").keyup(function(){
    if ($(this).val().length > 2) {
    $.ajax({
        type: 'POST',
        url: 'ajax/ajaxPerfil.php',
        data: { function : "askForUsr", usrname: $(this).val() },
        dataType: 'json',
        success: function(data) {
            alert(data);
            if(data.exists) {
                $(".usrSt").attr('style', '')
                    .attr('style', "color:red;")
                    .html('YA ESTÁ EN USO');
            } else {
                $(".usrSt").attr('style', '')
                    .attr('style', "color:green;")
                    .html('Disponible!!!');
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert("Error!!! =/");
        }
    });
    } else {
        $(".usrSt").attr('style', '')
            .attr('style', "display:none;")
            .html('');
    }
});

php, на стороне сервера:

<?php
    require_once("../src/ajax/ajaxPerfilController.php");
?>

ajaxPerfilController.php:

<?php
$srcFolder = "../src/";
$classes = array("mappers/Perfil.php",
                 "fachadas/PerfilFachada.php"
                 );
foreach ($classes as $class)
  require_once($srcFolder.$class);

function getByAttr($attr, $value) {
  if (strcmp($attr,"usrname") == 0) {
    $fachada = PerfilFachada::singleton();
    return $fachada->exists($value);
  }
  return NULL;
}

if (isset($_POST["function"])) {
  if (strcmp($_POST["function"],"askForUsr") == 0) {
    if (isset($_POST["usrname"])) {
      if (getByAttr("usrname",$_POST["usrname"])) {
        $return["exists"] = True;
        echo json_encode($return);
      } else {
        $return["exists"] = False;
        echo json_encode($return);
      }
    }
  }
}
?>

Дело в том, что мне постоянно сообщают об ошибке сервера 500 !!!с маршрутами require все в порядке, так как я запрограммировал запрос и попробовал его на консоли ... Итак, я не знаю, что еще делать, я попытался с dataType 'html', 'text', 'json' ввызов ajax, но получил тот же результат.Я думаю, это просто, но я просто не знаю, что делать ...

на всякий случай, я использую google-chorme

спасибо за вашу помощь !!!=) * * 1016

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Я проверил ваш код, и он должен работать в основном. Единственное, что я не смог проверить, это:

$srcFolder = "../src/";
$classes = array("mappers/Perfil.php",
                 "fachadas/PerfilFachada.php"
                 );
foreach ($classes as $class)
  require_once($srcFolder.$class);

так как у меня не было этих файлов. Я предполагаю, что это корень вашей проблемы.

Попробуйте этот код и посмотрите, работает ли он.

<?php
/*
$srcFolder = "../src/";
$classes = array("mappers/Perfil.php",
                 "fachadas/PerfilFachada.php"
                 );
foreach ($classes as $class)
  require_once($srcFolder.$class);
*/
function getByAttr($attr, $value) {
  if (strcmp($attr,"usrname") == 0) {
//    $fachada = PerfilFachada::singleton();
//    return $fachada->exists($value);
      return true;
  }
  return NULL;
}

if (isset($_POST["function"])) {
  if (strcmp($_POST["function"],"askForUsr") == 0) {
    if (isset($_POST["usrname"])) {
      if (getByAttr("usrname",$_POST["usrname"])) {
        $return["exists"] = True;
        echo json_encode($return);
      } else {
        $return["exists"] = False;
        echo json_encode($return);
      }
    }
  }
}
?>

если это так, то ошибка определенно в одном из этих двух файлов

1 голос
/ 05 июля 2011

Есть некоторые причины , потому что вы можете получить 500 Ошибка, включая ошибки времени выполнения / компиляции.

Единственная ошибка, которую я вижу, это то, что вы не объявляете ваш $return var (ну, php не требует объявления, но нужен массив при обращении в скобках), я бы добавил $return = array(); перед использованием это.

НО , Вы должны отладить свой код, чтобы найти ошибку. В зависимости от ваших инструментов лучше всего было бы установить точку останова и начать отладку. Если вы не можете сделать это каким-либо образом, я советую вам использовать Firebug для Firefox и посмотреть, какую ошибку вы получаете (на панели Net, раздел Response).

Надеюсь, это поможет. Приветствия

PS: Если у вас есть журналы на вашем сервере, вы можете найти там ошибку.

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