#php #jquery #mysql #ajax
#php #jquery #mysql #ajax
Вопрос:
Вот мой сценарий:
У меня есть выпадающее меню с разными значениями. Когда выбран параметр ‘A’, я хочу, чтобы он использовал jQuery для вызова Php-скрипта. Этот Php-скрипт выполнит запрос к базе данных, который вернет идентификатор записи. Когда этот идентификатор записи возвращается в javascript, javascript перенаправит браузер на определенный URL-адрес на основе возвращенного идентификатора (т. е. /products/$ID)
Прямо сейчас у меня это так, что выпадающее меню запускает функцию javascript. У меня также есть Php-скрипт, который выполняет работу с базой данных. Я просто не уверен, что должно быть в функции javascript, или как заставить ее подключиться к Php-скрипту, и как я получаю возвращаемые данные (и как обращаться с возвращаемым типом — xml, html и т.д.)
Я использую библиотеку jQuery и Php 5.x.
Комментарии:
1. да, я знаю, что это шаги, но я не уверен в том, как работает реализация. Извините, я всегда забываю в пылу событий нажать «принять», когда нахожу свой ответ ! 🙂
Ответ №1:
Простым примером было бы принять форму, подобную
Example.php
<form id="form" name="form">
<select name="dropdown" id="dropdown">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<input type="submit" id="submit" name="submit" value="Submit!" />
</form>
Затем свяжите ее с каким-нибудь jQuery, чтобы перехватить форму, и отправьте ее в файл PHP
JQuery.js
$(document).ready(function(){
$("#dropdown").change(function(event) {
$.ajax({
type: "POST",
url: "query.php",
data: $('#form').serialize(),
datatype: "json",
success: function(data){
var ret = jQuery.parseJSON(data);
// Redirect to ret.link
}
});
event.preventDefault();
});
});
Затем создайте PHP-файл для ее интерпретации
query.php
$stmt = $sql->dbh->prepare("SELECT `Link` FROM `Links` WHERE `ID` = :id");
$stmt->bindValue(':id', $_POST['dropdown']);
$stmt->execute();
$link = $stmt->fetch()['Link'];
echo json_encode(array('link' => "{$link}"));
die();
Ответ №2:
$("#menu-item").click(function() {
jQuery.ajax({
type: "POST",
url: "yourScript.php",
data: "data=foo",
success: function(response){
//redirect to id using response
window.location.replace("http://yoursite.com/products/" response);
}
});
});
Конечно, это нужно будет настроить с учетом вашей уникальной ситуации.
Комментарии:
1. но в каком формате ‘response’? и как бы я получил доступ к данным внутри него?
2. ответ — это любые данные, которые возвращаются из вашего php-скрипта. это может быть что угодно, от JSON до HTML и строки. Однако JSON обычно является лучшим способом отправки данных туда и обратно, поскольку jQuery обладает отличной функцией .parseJSON
3. спасибо за это, я почти на месте. все еще возникают некоторые проблемы с возвратом, но я не разберусь