использование ajax jquery для запуска PHP-скрипта - PullRequest
0 голосов
/ 05 марта 2012

Используя Codeigniter, я пытаюсь запустить скрипт php после того, как пользователь нажмет кнопку отправки. Я следовал довольно многим учебникам и придумал следующий код:

Если это поможет увидеть реальную страницу, посетите ее здесь: http://rickymason.net/townbuilder гость / гость для входа (в настоящее время требуется)

На мой взгляд (структура.php), у меня есть:

<div id="structures">
<h1>Build</h1>
<form name="buildForm" id="buildForm" method="POST">
    <select name="buildID" class="buildClass">
    <option value="0" selected="selected" data-skip="1">Build a Structure</option>
<?php foreach ($structures as $structure_info): ?>
<option name='<?php echo $structure_info['str_name'] ?>' value='<?php echo $structure_info['str_id'] ?>' data-icon='<?php echo $structure_info['str_imageloc'] ?>' data-html-text='<?php echo $structure_info['str_name'] ?><i>
    <?php echo $structure_info['timebuildmins'] ?> minutes<br><?php echo $structure_info['buy_gold'] ?> gold</i>'><?php echo $structure_info['str_name'] ?></option>
<?php endforeach ?>
    </select>
    <div id="buildSubmit">
        <input class="button" type="submit" value="Submit"/>
    </div>
</form>
</div>
<div id="output"> Result here</div>

Это создает мою форму выбора и создает ее в HTML. Затем я создал файл .js для запуска ajax:

$("#submit").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: '../php/build.php',        
data: "",
dataType: 'json',                     
success: function(data)          
{
  alert("success!");
} 
});
}); 

Я старался сделать это как можно проще, просто для целей тестирования. Javascript является новым для меня, и я нахожу его чрезвычайно запутанным по некоторым причинам Из того, что я могу собрать, этот скрипт должен активироваться после нажатия кнопки отправки. Затем он запускает скрипт build.php, затем, если он возвращает эхо через json, он предупреждает об успехе. право?

Мой скрипт build.php находится ниже:

<?php
    $query = "INSERT INTO user_structure (str_id, user_id) VALUES ('7', '7')";
    mysql_query($query) or die ('Error updating database');      
    echo "success";
?> 

Опять же, очень просто ...

К сожалению, когда я нажимаю "Отправить", кажется, что страница "обновляется", но ничего не происходит. Я не ожидаю, что что-нибудь произойдет на странице, но база данных также не получает никаких значений.

У меня нет файлов build.php или build.js в контроллере или модели, они находятся вне каталога приложения и доступны вне структуры CI uri / url.

На данный момент я просто пытаюсь успешно запустить скрипт php, нажав на кнопку отправить. Моя последняя цель - взять значение str_id, созданное для формы, затем передать эту переменную и user_id в файл build.php, создать запись в db, а затем обновить страницу, чтобы отобразить обновленную информацию о БД.

Очевидно, это не работает! Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 05 марта 2012

Этот скрипт работает с элементом, имеющим идентификатор "submit" (потому что вы используете "#submit" в качестве селектора)

Используйте событие click вместо отправки

Либо вы можете дать идентификатор для вашего представления, как это

и используйте вот так

$("#btnSubmit").click(function(e){
   // your rest of code
});

или используйте имя класса

$(".button").click(function(e){
   // your rest of code
});

Но всегда лучше использовать идентификатор, потому что будет только один (и должен быть) элемент с идентификатором. Несколько элементов могут иметь один и тот же класс.

0 голосов
/ 21 июля 2017

Ваш код jquery нацелен на элемент с идентификатором «submit», однако ваша форма имеет идентификатор «buildForm», следовательно, код не нацелен на форму, и когда вы нажимаете «submit», он просто продолжает свое обычное поведение, которое заставляет экран обновляться, чтобы исправить это, измените селектор в вашем коде jquery

$("#buildForm").submit(function(e){
    // the rest of the code here remains
}); 

Это должно исправить

0 голосов
/ 14 декабря 2013

Добавьте атрибут action для вашего form:

<form action="build.php" name="buildForm" id="buildForm" method="POST">`

OR

<form action="<?php /* Script code here */ ?>" name="buildForm" id="buildForm" method="POST">`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...