Jump to content
Sign in to follow this  
Mvrosking

Formularz wysłany przez AJAX nie zwraca poprawnej odpowiedzi jQ / PHP

Recommended Posts

Witam, mam taki kod ajax:

$("#buy_sms_button").click(function)) {
  $.ajax({
    type: "POST",
    url: "payments/payments.php",
    data: data,
    success: function(data) {
      $("#form_message").html(data);
    }
  });
  return false;
});

Oraz taki kod, który zawiera formę html:

<div id="form_message"></div>
<form method="post">
  <input type="hidden" name="product_id" value="<?php echo $p['id']; ?>">
  <div class="form-group">
    <label for="sms_nick">Nick</label>
    <input type="text" name="sms_nick" class="form-control" placeholder="Wpisz nick gracza.">
  </div>
  <div class="form-group">
    <label for="sms_code">Kod SMS</label>
    <input type="text" name="sms_code" class="form-control" placeholder="Wpisz kod zwrotny otrzymany smsem.">
  </div>
  <div class="form-group">
    <input type="submit" id="buy_sms_button" name="buy_sms_button" class="btn btn-primary" value="Zakup">
  </div>
</form>

I taki kod do sprawdzania kodu sms:

<?php
include 'payments_sms.php';
$nick = mysqli_real_escape_string($database, $_POST['sms_nick']);
$code = mysqli_real_escape_string($database, $_POST['sms_code']);
$product_id = mysqli_real_escape_string($database, $_POST['product_id']);
if(empty($nick) && empty($code)) {
  echo "form_empty";
}
else {
  if(strlen($nick) > 16) {
    echo "nick_error";
  }
  else {
    $product = $database->query("SELECT * FROM `products_list` WHERE id='{$product_id}'");
    $product = $product->fetch_assoc();
    $settings = $database->query("SELECT * FROM `shop_settings`");
    $settings = $settings->fetch_assoc();
    if(checkCode($settings['payments_provider'], $settings['payments_userid'], $code, $settings['payments_serviceid'], $product['sms_number'])) {
      echo "done";
      $database->query("INSERT INTO `last_buyer` (nick, product_id, server_id, date, payments_method) VALUES ('$nick', '$product_id', '$server_id', now(), 'SMS')");
    }
    else {
      echo "code_error";
    }
  }
}

A tu funkcja checkCode:

<?php
function checkCode($payments, $user_id, $code, $service_id, $number) {
  if($payments == 'microsms') {
    $handle = fopen("http://microsms.pl/api/check.php?userid=".$user_id."&code=".$code.'&serviceid='.$service_id.'&number='.$number, 'r');
    $check  = fgetcsv($handle, 1024);
    fclose($handle);
    if($check[0] != 'E') {
      if($check[0] == 1) {
        return true;
      }
      else {
        return false;
      }
    }
    else {
      return false;
    }
  }
}

I gdy kliknę w button to nic się nie dzieje, tylko strona zostaje przeładowana.

Share this post


Link to post

Moim zdaniem problem polega na tym, że formularz nie jest wywołany a dwa - kod JS także. Sprawdź jaki wynik zwraca konsola.

  • Like 1

Share this post


Link to post
2 minuty temu, l3szcz napisał:

Moim zdaniem problem polega na tym, że formularz nie jest wywołany a dwa - kod JS także. Sprawdź jaki wynik zwraca konsola.

Ale gdy kliknę przyciski wyświetla się że formularz jest pusty, ale nie wyświetla się w danym divie, tylko na samej górze. 

Share this post


Link to post

Co zwraca konsola? (F12)☺️

  • Like 1

Share this post


Link to post
5 minut temu, l3szcz napisał:

Co zwraca konsola? (F12)☺️

Uncaught ReferenceError: data is not defined
    at HTMLInputElement.<anonymous> (buy.php?server_id=1:251)
    at HTMLInputElement.dispatch (jquery.min.js:3)
    at HTMLInputElement.r.handle (jquery.min.js:3)

 

Wszystko działa, proszę o zamknięcie.

Share this post


Link to post

Jest specjalna metoda do wykrywania akcji formularza - .submit() - radzę sobie poczytać na ten temat niż błądzić po omacku

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
×
×
  • Create New...