2011-07-15 6 views
0

私はcodeigniterフレームワークを使用しています、私の問題は、私は正しい値をPHPからjsに渡すことができません。このコードは、ユーザー入力からデータベースへの可用性チェック用です。ここJSにPHPの値を渡す方法。 CI

は私のコントローラである。ここ

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>'); 
} 
} 
です210

どんなアイデアでも大歓迎です。ありがとうございました。

おかげで、

ジャム

+0

申し訳ありませんが、それは、コードの全体の多くがあります。何が問題なの? PHPからの値を持つjs変数をエコーすることで、PHPからjavascriptに変数を渡すことができます。 –

+1

あなたはmysql_escape_stringを使用しています。これは不要で、非推奨の方法です:もしあれば、mysql_real_escape_stringを使うべきです。 $ this-> db-> escape()を呼び出すかアクティブレコードを使用する場合は不要です。 –

+0

はい。その情報をありがとうMr. Damien ..申し訳ありませんが、これは初めて私がCIを使いました。とにかくもう一度感謝:) –

答えて

0

あなたがそれらを返さない$ A/$ bの変数をエコーする必要があります。現在、ajaxリクエストには出力がありません。 Firefox用のFirebugまたはWebkitブラウザ(Chrome、Safari)のInspector Consoleを使用して、ajaxリクエストから実際の応答を見ることができます。

+0

ええ、私はそれをやった。 $ aと$ bをエコーし​​ています。これは私の最初のコードですが、うまくいきませんので返すようにしますが、同じエラーです。私はPHPから私のjsに値を渡すことはできません。申し訳ありませんが、これはCIを使用して初めてのことです。ありがとう@zbrox –

+0

私はあなたのコードをローカルのテストCIインストールにコピーしました。私はこれを実行する上で2つの問題に直面しました - 1)あなたはAJAXの返答をエコーし​​、他のPHPコードへの応答を処理していないので返すべきではありませんが、 2)(ドキュメント).readyの前にドル記号がありませんでしたが、これはここにコードを貼り付けるときの誤植に過ぎません。 それ以外はすべてがうまくいくようです。 Firebugでこれをデバッグしていますか?あなたはajaxリクエストが確実に送信されているのを見ていますか? – zbrox

0

ご協力いただきありがとうございます。私は火かき棒を使用して私のエラーを把握する。そこ私のJSの私のコード1上の2個のエラーがあり、ここで私のMySQLの構文で1

は、ここに私のエラー

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'"); 

ある私のAJAXリクエストが正常に送信され、私のソリューションは

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"); 

ですが、別のURLでlocalhost/my_folder/index.php/activityCode_availabilityの代わりにlocalhost/index.php/activityCode_availabilityを送信しているので、localhostサーバーのデフォルトページで送信しています。また、私はそれを返す代わりに$ aと$ bをエコーし​​ました。あなたのアドバイスに感謝します。 :)

おかげで、

ジャム

関連する問題