Первая попытка ajax, скрипт не виден? - PullRequest
2 голосов
/ 26 июля 2010

Я уже некоторое время кодирую с помощью php / CI и начинаю осваивать его, но я пытаюсь сделать скачок, чтобы использовать jQuery + кое-что из ajax, и я не могу получить это на работу. Как будто сценарий даже не виден.

Что я хотел бы сделать, это вызвать функцию java / test, когда пользователь нажимает кнопку отправки. Я хотел бы добавить что-то вроде if (ajax) сделать что-то, поэтому у меня есть это в данных формы, но не имеет ничего общего с тем, что вызывает функцию submit - я добавил return false, чтобы он не запускал функцию submit , все же это все еще.

Вот мой код, любая помощь будет отличной. Спасибо

java.php // Контроллер

<?php

class Java extends Controller{

    function index(){
        $this->load->view('java_view');
    }

    function submit(){
        $one = $this->input->post('one');
        $two = $this->input->post('two');

        echo $one;
    }
            function test(){
        $one = $this->input->post('one');
        $two = $this->input->post('two');

        echo $two;
    }


}   

java_view.php // viewfile

<html>
<header>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script type="javascript">
    $(document).ready(function(){
        $('#submit').click(function(){

            var form_data = {
                one: ('#one').val(),
                two: ('#two').val(),
                ajax: '1',
            };

            $.ajax({
            url: "<?php echo site_url('java/test'); ?>",
            type: 'POST',
            data: form_data,
            success: function() {
                alert('success');
            }
            });
                            return false;
        }); 
    });
</script>

 </header>

 <body>

 <?php

echo form_open('java/submit');  

//setting up the fields
$form_data = array(
    'name' => 'one',
    'id' => 'one',
);

echo "<p> One </p> <br/>";

echo form_input($form_data);

$form_data = array(
    'name' => 'two',
    'id' => 'two',
);

echo "<br/> <p>Two</p> <br/>";

echo form_input($form_data);

$form_data = array(
    'name' => 'submit',
    'id' => 'submit',
    'value' => 'Submit',
);
echo "<br/>";

echo form_submit($form_data);
echo form_close();

Ответы [ 3 ]

5 голосов
/ 26 июля 2010

Эта строка:

$('#submit').onclick(function(){

Должно быть:

$('#submit').click(function(){

Я предполагаю, что #submit не input type="submit", в противном случае страница будет перезагружена, если вы не введете return false вобработчик конца клика.

Подробнее:

http://api.jquery.com/click/

Обновление:

Попробуйте это (добавлено live и несколько других модификаций):

 $(document).ready(function(){
    $('#submit').live('click', function(){

        var form_data = {
            one: ('#one').val(),
            two: ('#two').val(),
            ajax: '1',
        };

        $.ajax({
        url: "<?php echo site_url('java/test'); ?>",
        type: 'POST',
        data: form_data,
        success: function() {
            alert('success');
        });

        return false;
    }); 
});
2 голосов
/ 26 июля 2010

Еще лучше?

$('#submit').live("click", function(){

Если вы вообще динамически обновляете DOM или ваше событие onclick может вызываться более одного раза на загрузку страницы, то безопаснее использовать live ()

http://api.jquery.com/live/

1 голос
/ 27 июля 2010

Просто мысль ... вы пробовали явно указать URL для вызова Ajax в вашем JavaScript?Возможно, он не понимает скачок в php для отображения пути URL.

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