こんにちは私は現在jQueryでAJAXについて学んでいて、今はcodeigniterでそれを使おうとしています。キーアップイベントでコントローラーの関数を呼び出し、とにかく機能しているテキストボックスがありますが、コントローラー自体はテキストボックスの現在の値を取得せず、送信していないため空白のままになります。まだフォームなので、POSTデータを取得できません。送信するショットが1つしかないので、フォームを送信したくありません。この1つだけに必要なのは、イベントがすでに存在するかどうかを確認することです(検証目的で)。これが私のコードで、見やすくするためにコメントが追加されています。
意見:
<div>
<form>
<table border="0">
<tr>
<td>
<title>Name: </title>
</td>
<td>
<input id="name" type="text" name="eventname" />
</td>
<td>
<div id="name1"></div>
</td>
</tr>
</table>
<script type="text/javascript" src="<?php echo $base; ?>javascripts/jquery-1.8.2.min.js">
</script>
<script type="text/javascript" src="<?php echo $base; ?>javascripts/ajax.js">
</script>
</form>
</div>
コントローラー:
<?php
class Login extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('test_model');
}
public function view()
{
$data['base'] = $this->config->base_url();
//CHECK IF THE $PAGE VIEW IS EXISTING
if ( !file_exists('test/views/pages/test_form/test_form.php'))
{
// IF PAGE DOESN'T EXISTS SHOW 404 ERROR
show_404();
}
//FOR THE TITLE PART
$data['title'] = ucfirst('Test');
$this->load->view('templates/header', $data);
$this->load->view('pages/test_form/test_form', $data);
$this->load->view('templates/footer', $data);
}
public function message()
{
//this one will access database
echo $this->test_model->check_event($this->input->post('eventname'));
//username doesn't get the current value on keyup unlike the AJAX part
}
}
モデル:
<?php
class Test_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function check_event($test_input)
{
if($test_input==null){
return "True";
}
else
return "False";
}
}
およびAJAX:
$('#name').keyup(function() { //LISTENER FOR BUTTON CLICK BASED ON ID button ON THE PHP PAGE
var name = $('#name').val();
$.ajax({ //STARTS AJAX
type: 'POST',
url: '/CodeIgniter_2.1.3/index.php/login/message/', //THIS PAGE IS LOADED ON THE AJAX data IS THE CONTENTS ON THE PAGE NOTE COMMA SEPARATED VALUES
data: 'name='+name,
statusCode: { //THE STATUS FOR THE PAGE. NOTE THIS IS CASE SENSITIVE
404: function(){ //IF 404 ERROR OCCURS THIS MESSAGE WILL BE DISPLAYED
$('#name1').text('Page not found');
}, //NOTE COMMA SEPARATED VALUES
202: function(){ //IF 202 SHOW THIS TEXT
$('#name1').text('Please wait');
}
}, //NOTE COMMA SEPARATED VALUES
success: function(data){ //IF PAGE EXISTS OR FOUND THE data FROM THE GIVEN PAGE WILL BE LOADED AND PASSED
$('#name1').html(data); //THE content ID ON THE PHP PAGE WILL CONTAIN ALL THE html data OF THE GIVEN PAGE
}
});
});
このAJAXの部分については申し訳ありません。必要ないと思われるコメントがたくさんあります。コードをすばやく確認するためのメモです。:)コードに何か問題がありますか、それともデータを取得するために何らかの関数を使用する必要がありますか?