Как передать значение PHP в JS. под CI - PullRequest
0 голосов
/ 15 июля 2011

Я использую платформу codeigniter, моя проблема в том, что я не могу передать правильное значение из php в js. Этот код предназначен для проверки доступности от ввода пользователя в базу данных.

вот мой контроллер

class Ajax extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->output->set_output("This is an AJAX endpoint!");
    }

    function activityCode_availability()
    {
        $activityCode = trim($this->input->post("activityCode"));
        $activityCode = mysql_escape_string($activityCode);

        $msg = $this->Activity_model->check_activityCode($activityCode);


        if($msg == 1)
        {
            $a= '<font color="#cc0000"><b>'.$activityCode.'</b> is already in use.</font>';
            return $a;
        }
        else
        {
            $b = 'OK';
            return $b;
        }
    }
}

Вот мой взгляд

<?php
 $activityCode = array(
          'name'    => 'activityCode',
          'id'      => 'activityCode'
        );

 echo form_input($activityCode);
?>
<span id="availability_status"></span>

Вот моя модель

 function check_activityCode($activityCode)
 {  
      $query = $this->db->query("SELECT activityCode
            FROM ami_activity
            WHERE activityCode = '$activityCode'");

       return $query->num_rows();
 }

Вот мой Javascript

(document).ready(function(){
   $('#activityCode').change(activity_check);
 });


 function activity_check()
 {
   var activityCode = $('#activityCode').val();
   var msgbox = $("#availability_status");

   if(activityCode.length > 2)
   {
       $("#availability_status").html('<img src="<?php echo base_url();?>img/loader.gif">&nbsp;Checking availability.');

       $.ajax({ 
          type: "POST", 
          url: "/index.php/ajax/activityCode_availability", 
          data: "activityCode="+ activityCode, 
          success: function(msg){ 
            $("#availability_status").ajaxComplete(function(event, request){ 
                if(msg == 'OK')
                { 
                    $("#activityCode").removeClass("red"); // remove red color
                    $("#activityCode").addClass("green"); // add green color
                    msgbox.html('<img src="<?php echo base_url();?>img/green_check.gif"> <font color="Green"> Available </font>');
                } 
                else 
                { 
                    $("#activityCode").removeClass("green"); // remove green color
                    $("#activityCode").addClass("red"); // add red  color
                    msgbox.html(msg);
                } 
            });
        } 
    }); 

}
else
{
    $("#activityCode").addClass("red"); // add red color
    $("#availability_status").html('<font color="#cc0000">Enter valid User Name</font>');
}
}

Любая идея очень ценится. заранее спасибо.

Спасибо

Джемы

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

Благодаря вашей помощи он работает прямо сейчас.Я выяснил свою ошибку, используя firebug.В моем коде две ошибки: 1 в моем JS и 1 в моем синтаксисе MySQL

вот мои ошибки

1.) url: "/index.php/ajax/activityCode_availability"
2.) on my model I included single quote on my condition
    $query = $this->db->query("SELECT activityCode
        FROM survey_activity
        WHERE activityCode = '$activityCode'");

вот мои решения

1.) url: "my_folder/index.php/ajax/activityCode_availability"
2.) on my model I removed the single quote on my query condition
    $query = $this->db->query("SELECT activityCode
        FROM survey_activity
        WHERE activityCode = $activityCode");

Мойajax-запрос отправляется правильно, но по другому адресу.он отправляет на localhost / index.php / ActivityCode_availability вместо localhost / my_folder / index.php / activityCode_availability, поэтому он отправляет на страницу по умолчанию моего сервера localhost.А также я реализовал отображение $ a и $ b вместо того, чтобы возвращать их.Благодаря вашему совету.:)

Спасибо,

Джемы

0 голосов
/ 15 июля 2011

Вы должны выводить переменные $ a / $ b, а не возвращать их. В настоящее время запрос ajax не имеет вывода. Вы можете использовать Firebug для Firefox или Inspector Console в браузерах webkit (Chrome, Safari), чтобы увидеть фактический ответ, который вы получаете от запроса ajax.

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