Použití základního PHP v AJAX?
- Jakub.Man
- Člen | 11
Snažím se v přihlašovacím formuláři zobrazit při psaní, zdali je jméno už zabrané pomocí jQuery AJAX a PHP souboru. Nechtělo se mi používat presentery, tak jsem udělal kód v php, dal ho do složky www a odkazuji na něj takto
$("#reg-username").on("input", function(e) {
var input = $("#reg-username").val();
$.get("check.php", { input: input, type: "username" },
function(result){
if(result == 0){
$("#reg-username").removeClass("error-field");
$("#reg-username').addClass("success-field");
}else if(input != ""){
$("#reg-username").addClass("error-field");
$("#reg-username").removeClass("success-field");
}
});
});
check.php ve složce www
<?php
$mysqli = new MySQLi(***);
$input = $_GET['input'];
$type = $_GET['type'];
if($type == 'username') {
$stmt = $mysqli->prepare("SELECT username FROM info WHERE username = ? LIMIT 1");
$stmt->bind_param('s', $input);
$stmt->execute();
$pocetVysledku = $stmt->numRows();
echo $pocetVysledku;
}
else if($type == 'email') {
$stmt = $mysqli->prepare("SELECT email FROM info WHERE email = ? LIMIT 1");
$stmt->bind_param('s', $input);
$stmt->execute();
$pocetVysledku = $stmt->numRows();
echo $pocetVysledku;
}
?>
Problém je, že nette se pokouší přehrát soubor check.php přes
presentery..
(chyba Cannot load presenter ‚Check:Php‘, class
‚App\CheckModule\Presenters\PhpPresenter‘ was not found)
Je způsob jak spustit základní PHP soubor pomocí AJAX nebo to musím
nějak předělat do nette? Pokud to musí být v nette, jak zpracovat
jednoduché AJAX dotazy?
Předem děkuji..
Editoval Jakub.Man (28. 9. 2016 18:44)
- CZechBoY
- Člen | 3608
Nette se v v základu koukne jestli soubor neexistuje, chyba bude
jinde.
Proč vlastně nechceš použít Nette a přitom píšeš na Nette forum? Nějak
nechápu smysl mít na webu framework a pak ho obcházet.
Jinak teda zpracuješ ajax request stejně jako obyč neajax request :-)
class AbcPresenter extends UI\Presenter
{
public function actionRandomNumber()
{
$this->sendJson(rand()); // vraci "2"
}
}
Editoval CZechBoY (12. 9. 2016 19:14)
- iNviNho
- Člen | 352
Na fore je toho dosť. Najpoužívanejší v nette je myslím nette.ajax.js
Skús pozrieť a inšpirovať sa :)
- GEpic
- Člen | 566
Copy – Paste z jednoho projektu (staršího / 2.3 – mělo by fungovat i na 2.4), snad pomůže (stačí využít nette.ajax.js)
public function handleCheckEmail($email)
{
if ($this->userModel->getByEmail($email)) {
$this->payload->available = false;
}
else {
$this->payload->available = true;
}
$this->sendPayload();
}
$(".form-email").change(function () {
$.nette.ajax({
type: "GET",
dataType: "json",
url: {link checkEmail!},
data: { email: $(this).val() },
success: function (payload) {
$('input[name=verified]').prop('checked', payload.available);
if (!payload.available) {
$('input[name=email]')
.attr('data-content', 'Bohužel, tento email již nelze použít')
.focus()
.parent('.form-group')
.addClass('has-super-error');
}
else {
$('input[name=email]')
.parent('.form-group')
.removeClass('has-super-error');
}
}
});
});
Editoval GEpic (12. 9. 2016 21:41)