В настоящее время я пытаюсь сделать проверку формы в реальном времени с помощью PHP и AJAX. Поэтому в основном – мне нужно отправить значение поля через AJAX в PHP-скрипт (я могу это сделать), а затем мне нужно запустить функцию внутри этого файла PHP с переданными мной данными. Как я могу это сделать?
JQuery:
$.ajax({ type: 'POST', url: 'validate.php', data: 'user=' + t.value, //(t.value = this.value), cache: false, success: function(data) { someId.html(data); } });
Validate.php:
// Теперь мне нужно использовать значение «user», которое я отправил в этой функции, как я могу это сделать?
function check_user($user) { //process the data }
Если я не использую функции и просто сырые php в validate.php, данные отправляются и код внутри него выполняется, и все работает так, как мне нравится, но если я добавлю каждую функцию, я хочу, чтобы все стало очень грязным, поэтому я предпочитаю использовать отдельные функции ,
Я удалил много кода, который не был уместным, чтобы сделать его коротким.
Вам просто нужно вызвать функцию внутри вашего файла.
if(isset($_REQUEST['user'])){ check_user($_REQUEST['user']); }
1) Это не выглядит красиво
data: 'user=' + t.value, //(t.value = this.value),
Это мило
data: {user: t.value},
2) Используйте $ _POST
function check_user($user) { //process the data } check_user($_POST['user'])
В вашем validate.php вы получите классический запрос POST. Вы можете легко вызвать функцию в зависимости от той переменной, которую вы тестируете, например:
<?php if (isset($_POST['user'])) { $result = check_user($_POST['user']); } elseif (isset($_POST['email'])) { $result = check_email($_POST['email']); } elseif (...) { // ... } // returning validation result as JSON echo json_encode(array("result" => $result)); exit(); function check_user($user) { //process the data return true; // or flase } function check_email($email) { //process the data return true; // or false } // ... ?>
Данные отправляются в глобальной переменной $_POST
. Вы можете получить к нему доступ при вызове функции check_user:
check_user($_POST['user']);
Если вы это сделаете, помните, пожалуйста, чтобы проверить значение поля, не было ли посланное в нем неактивное содержимое.
Вот как я это делаю
Запрос Jquery
$.ajax({ type: 'POST', url: "ajax/transferstation-lookup.php", data: { 'supplier': $("select#usedsupplier").val(), 'csl': $("#csl").val() }, success: function(data){ if (data["queryresult"]==true) { //add returned html to page $("#destinationtd").html(data["returnedhtml"]); } else { jAlert('No waste destinations found for this supplier please select a different supplier', 'NO WASTE DESTINATIONS FOR SUPPLIER', function(result){ return false; }); } }, dataType: 'json' });
Страница PHP Просто принимает 2 ввода
$supplier = mysqli_real_escape_string($db->mysqli,$_POST["supplier"]); $clientservicelevel = mysqli_real_escape_string($db->mysqli,$_POST["csl"]);
Запускает их через запрос. Теперь в моем случае я просто возвращаю raw html, хранящийся внутри массива json, с флагом проверки, который говорит, что запрос был успешным или неудачным
$messages = array("queryresult"=>true,"returnedhtml"=>$html); echo json_encode($messages); //encode and send message back to javascript
Если вы посмотрите на мой первоначальный javascript, вы увидите, что у меня есть условия на queryresult, а затем просто выплюнуть необработанный html обратно в div, вы можете делать все, что вам нужно.