Ajax post adat küldés után php ban nem fut le semmi.
2019-12-23T12:14:33+01:00
2019-12-27T17:15:08+01:00
2022-08-11T17:05:31+02:00
Incomingson
Sziasztok,

Egyszerűen nem fut le a php fájlomban semmilyen sql parancs, sőt még egy árva változó deklarálás sem. Azonnal össze borul tőle az ajax.

index.html

<script type="text/javascript"> $(document).ready(function() { $('#submit').submit(function(e){ e.preventDefault(); var mode = 1; var veznev = $("#veznev").val(); var kernev = $("#kernev").val(); var email = $("#email").val(); var option = $("input[name=rate]:checked").val() $.ajax({ type: "POST", url: "ajax/formProcess.php", dataType: "json", data: {veznev:veznev, kernev:kernev, email:email, option:option, mode:mode}, success : function(data){ if (data.code == "200"){ $(".display-succes").html("<ul>"+data.msg+"</ul>"); $(".display-succes").css("display","block"); } else { $(".display-error").html("<ul>"+data.msg+"</ul>"); $(".display-error").css("display","block"); } $("#veznev").val(''); $("#kernev").val(''); $("#email").val(''); } }); }); }); </script>


formProcess.php

if($_POST['mode']==1) { $errorMSG = ""; if (empty($_POST['option'])) { $errorMSG = "<div>Hiba: Nincs kiválasztott csomag.</div>"; } else { $option = $_POST["option"]; } if (empty($_POST["veznev"]) || empty($_POST["kernev"])) { $errorMSG = "<div>A Vezetéknév/Keresztnév megadása kötelező!</div>"; } else { $veznev = $_POST["veznev"]; $kernev = $_POST["kernev"]; $name = $veznev.$kernev; } if (empty($_POST["email"])) { $errorMSG .= "<div>Email megadása kötelező!</div>"; } else if(!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) { $errorMSG .= "<div>Hibás email formátum!</div>"; }else { $email = $_POST["email"]; } if(empty($errorMSG)){ $valami = 1; // <---- na már ezt totális hibát okoz és nincs response a html oldalon. $msg = '<div id="msg">Regisztráció sikeres, visszaigazoló email kiküldve!</div>'; echo json_encode(['code'=>200, 'msg'=>$msg]); } else { echo json_encode(['code'=>404, 'msg'=>$errorMSG]); } }


Szóval gondolom én nem jól kezelem le az adatokat, de akkor az IF ek miért működnek és egy sima deklarálás miért nem?

Előre is köszi az ötleteket...
Mutasd a teljes hozzászólást!
Kellemes karácsonyi kódolást,

$option = trim($_POST['option']);
helyett
$option = trim($_POST['rate']);
szerintem
Mutasd a teljes hozzászólást!

  • Tehát a php programod meghívódik, csak nem azt csinálja, amit kéne neki?
    Vagy meg sem hívódik, mintha az AJAX kérés meg sem történt volna?
    Vagy az AJAX kérés meg sem történik, a frontend rész(az index.html) nem hívogat semmit?

    Az első esetén a formProcess.php, a másodikban a webszerver, a harmadikban a JS a hibás.
    Mutasd a teljes hozzászólást!
  • formProcess.php-ban a rakd ki a nyitó "<?php"  tag-et,  és
    akkor feldolgozza az ajax hívást.
    Mutasd a teljes hozzászólást!
  • Hali.

    Van benne php tag , kis módosítással lefut, egy sqli insert nél viszont a php mailert nem tudtam hozzá tenni.

    Tehát így van visszajelzés:

    if(empty($errorMSG)){ $q = "INSERT INTO orders (package,last_name,first_name,email,status,time) VALUES ('$option','$veznev','$kernev','$email','1','$time')"; $r = mysqli_query($con,$q); if($r) { $msg = 'Regisztráció sikeres, visszaigazoló email kiküldve!'; echo json_encode(['code'=>200, 'msg'=>$msg]); } } else { echo json_encode(['code'=>404, 'msg'=>$errorMSG]); }
    Viszont a php mailert már nem tudtam belerakni.
    Mutasd a teljes hozzászólást!
  • Ez a php mailer új, eddig ezt nem mondtad.
    Sql insert lefut ?
    Hol a gond?
    Segítünk, csak fejtsd ki konkrétabban.
    Mutasd a teljes hozzászólást!
  • Szia!

    Először is Boldog Karácsonyt! :) 

    Az utolsó általam küldött script szépen lefut. SQLI insert is.
    Azonban szintaktikai errort dobott vissza amit nem láttam. Az ajax tudtommal nem tud annyi hibát lekezelni, csak error 500.

    Teljesen másik oldalról kellett megközelítenem.
    Ebben már csak annyi a hiba, hogy a radio gombokat nem kezeli le a serialize! Így ide még kell megoldást találnom.

    index.html radio gomb

    <input id="option1" value="1" type="radio" name="rate"> <input id="option2" value="2" type="radio" name="rate"> <input id="option3" value="3" type="radio" name="rate">

    index.html

    <script> $(document).ready(function(){ $('#submit-btn-reg').click(function(event){ event.preventDefault(); $.ajax({ dataType: 'JSON', url: 'ajax/sendpackage.php', type: 'POST', data: $('#contactreg').serialize(), beforeSend: function(xhr){ $('#submit-btn-reg').html(''); }, success: function(response){ if(response){ console.log(data); if(response['signal'] == 'ok'){ $('#msg').html('<div class="alert alert-success">'+ response['msg'] +'</div>'); } else{ $('#msg').html('<div class="alert alert-danger">'+ response['msg'] +'</div>'); } } }, error: function(){ $('#msg').html('<div class="alert alert-danger">Üzenetküldés nem lehetséges, próbálja meg később.</div>'); }, complete: function(){ $('#submit-btn-reg').html('Küldés'); } }); }); }); </script>






    sendpackage.php

    <?php require('phpmailer/PHPMailerAutoload.php'); $option = trim($_POST['option']); $veznev = trim($_POST['veznev']); $kernev = trim($_POST['kernev']); $email = trim($_POST['emailreg']); $name = $veznev.' '.$kernev; $time = time(); if($option != null) { $signal = 'bad'; $msg = '<p><b>option</b></p>'; } if($veznev != null && $kernev != null && $email != null && $option != null){ if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $signal = 'bad'; $msg2 = '<p><b>Hibás email formátum!</b></p>'; } else{ $q = "INSERT INTO orders (package,last_name,first_name,email,status,time) VALUES ('$option','$veznev','$kernev','$email','1','$time')"; $r = mysqli_query($con,$q); $mail = new PHPMailer; $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'mail.valami.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'system@valami.com'; $mail->Password = '123456'; // SMTP password $mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 465; // TCP port to connect to $mail->setFrom('system@valami.com', 'Valami'); $mail->addAddress('free@gmail.com', 'Free'); // Add a recipient $mail->addReplyTo($email, $name); $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'From contact form Cloud9'; $mail->Body = 'Name: '.$name.' <br />Message: '.$message; if(!$mail->send()) { echo 'Küldés sikertelen'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { $signal = 'ok'; $msg = '<p><b>Üzenet elküldve!</b></p>'; } } } else{ $signal = 'bad'; $msg = '<p><b>Minden mező kitöltése kötelező!</b></p>'; } $data = array( 'signal' => $signal, 'msg' => $msg ); echo json_encode($data); ?>
    Mutasd a teljes hozzászólást!
  • Kellemes karácsonyi kódolást,

    $option = trim($_POST['option']);
    helyett
    $option = trim($_POST['rate']);
    szerintem
    Mutasd a teljes hozzászólást!
  • Az lehetséges, csak egyenlőre az error: ág fut le. :) Még kikell derítenem mi a gondja, mert tulajdonképpen 2 ilyen ajax fut le és hív be 2 külön php-t. Szóval szerintem össze akadt.
    Mutasd a teljes hozzászólást!
  • Szóval: Átad minden változót, azonban vagy php mailert vagy sqli insertet használok. Ha minden a kettő van már errort dob az ajax, de a php lefut. Valami ötlet??

    <?php require('phpmailer/PHPMailerAutoload.php'); $veznev = trim($_POST['veznev']); $kernev = trim($_POST['kernev']); $emailreg = trim($_POST['emailreg']); $rate = trim($_POST['rate']); $name = $veznev.' '.$kernev; $time = time(); $DATABASE_HOST = 'localhost'; $DATABASE_USER = 'root'; $DATABASE_PASS = ''; $DATABASE_NAME = 'cybertruck'; $con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME); if ( mysqli_connect_errno() ) { die ('Nem sikerült csatlakozni -> MySQL: ' . mysqli_connect_error()); } mysqli_query($con, 'SET NAMES utf8'); if($veznev != null && $kernev != null && $emailreg != null && $rate != null){ if(!filter_var($emailreg, FILTER_VALIDATE_EMAIL)) { $signal = 'bad'; $msg = '<p><b>Hibás email formátum!</b></p>'; } else{ $q = "INSERT INTO orders (package,last_name,first_name,email,status,time) VALUES ('$rate','$veznev','$kernev','$emailreg','1','$time')"; $r = mysqli_query($con,$q); $mail = new PHPMailer; $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'mail.valami.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'system@valami.com'; $mail->Password = ''; // SMTP password $mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 465; // TCP port to connect to $mail->setFrom('system@valami.com', 'System'); $mail->addAddress('valami1@gmail.com', 'Free'); // Add a recipient $mail->addAddress($email, $name); $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'From contact form Cloud8'; $mail->Body = 'Name: '.$name.' <br />Message: '.$message; if(!$mail->send()) { $signal = 'bad'; $msg = 'Mailer Error: ' . $mail->ErrorInfo; } else { $signal = 'ok'; $msg = '<p><b>Üzenet elküldve!</b></p>'; } } } else{ $signal = 'bad'; $msg = '<p><b>Minden mező kitöltése kötelező!</b></p>'; } $data = array( 'signal' => $signal, 'msg' => $msg ); echo json_encode($data);


    Tehát lényegében nem kapja meg a $data a signal és az msg-t. Lehet hogy túl sok az if?
               
        
        


    ?>
    Mutasd a teljes hozzászólást!
  • Végülis kiderült mi volt a gond. Az adressbe {} tag ek közé kellett betennem a változót, valamint az egyik változó rossz volt és megakadt a kód. Ha meg a php valahol problémás azonnal megáll az ajax response hibával. A rate-re adtam pontot mert azt is benéztem de már átadja a radio gomb értékét.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd