Použití základního PHP v AJAX?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jakub.Man
Člen | 11
+
0
-

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
+
0
-

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
+
+1
-

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
+
+2
-

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)