| Autor | Zpráva | ||
|---|---|---|---|
| Grass33 Profil * |
#1 · Zasláno: 2. 5. 2022, 12:40:13
Zdravím,
jsem v JS naprostý začátečník. Řeším tento problém: na webu chci formulář se Selectem, kde si uživatel něco vybere, na základě čeho se pak doplní další políčka ve formuláři. <script>
$("body").on('change', '#sel_dodaci_adresa', function()
{
var selectedValue = $(this).val();
$.ajax({
url: 'dodaci_adresa.php',
type: 'POST',
data: {option : selectedValue},
success: function(data) {
console.log("Data sent!");
$('#jmeno').val(???);
$('#prijmeni').val(???);
$('#ulice').val(???);
alert(selectedValue);
}
});
});
</script>Testovací alert funguje (do dodaci_adresa.php se předá např. 1), jen nedokážu přenést data (nevím co napsat místo těch otazníků) z dodaci_adresa.php do polí formuláře. V dodaci_adresa.php je něco jako: require_once("config.php");
$query3 = mysqli_query($pripojeni, "SELECT * FROM uzivatele_adresy WHERE id='$_REQUEST['option']'");
while ($res = mysqli_fetch_array($query3)) {
echo $res['jmeno'];
echo $res['prijmeni'];
echo $res['ulice'];
}
|
||
| Kajman Profil |
#2 · Zasláno: 2. 5. 2022, 13:01:51
Pozor, pomocí uvedného php skriptu na serveru může kdokoliv vypsat všechny adresy všech uživatelů. Dokonce i data z jiných tabulek.
Takže 1. ošetřete sql injection, např. díky www.php.net/manual/en/mysqli.prepare.php 2. ošetřete, aby uživatel mohl získat jen svoji adresu 3. pole dat (např. celé $res, pokud nevadí, že tam budou všechny sloupce) vraťte pro jednoduché použíti jako JSON pomocí funkce www.php.net/manual/en/function.json-encode.php a se správným Content-Type 4. v případě úspěchu pak budou předaná data v data['jmeno'] |
||
| Grass33 Profil * |
#3 · Zasláno: 2. 5. 2022, 13:21:32
Děkuji za odpověď. Bezpečnost jsem zatím neřešil, jen chci rozeběhnout funčknost :-).
Stále se mi to nějak nedaří, teď mám kód: <script>
$("body").on('change', '#sel_dodaci_adresa', function()
{
var selectedValue = $(this).val();
//make the ajax call
$.ajax({
url: 'dodaci_adresa.php',
type: 'POST',
data: {option : selectedValue},
contentType: "application/json",
dataType: 'json',
success: function(data) {
$('#jmeno').val(data['prijmeni']);
$('#prijmeni').val(data['prijmeni']);
},
error: alert("nejde to")
});
});
</script>Což hodí error alert. A v dodaci_adresa.php <?php
require_once("config.php");
$query3 = mysqli_query($pripojeni, "SELECT * FROM uzivatele_adresy WHERE id='$_POST['option']'");
$array = mysqli_fetch_array($query3);
echo json_encode($array);
?> |
||
| Kajman Profil |
Content-Type na json jste měl nastavit pro odpověd ze serveru, ne pro požadavek na server. Tedy v php skriptu ne v js. Zapněte si v prohlížeči díky F12 vývojářské nástroje. Tam uvidíte asi i detail chyby.
Edit: A to prepare Vám pomůže i k funkčnosti sestaveného stringu s dotazem. Edit2: Osobně bych to ale řešil jinak. Nachystal bych si v php při generování košíku všechny uložené adresy uživatele, předal je stránce jako javascriptové pole nebo je dal jako data atributy k jednotivým optionům a pak si údaje do formuláře vyzobnul jen javascriptem bez dotazu na server. |
||
|
Časová prodleva: 4 roky
|
|||
0