AJAX PHP $_POST[] nie działa

AJAX PHP $_POST[] nie działa
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

https://github.com/radeth/dbtest
php nie chce zaciągnąć danych przez ajaxa po wpisaniu nazwy zmienne "na sztywno" w kodzie wszystko działe ale przy uzyciu $_POST[] pojawia się problem Undefined index

edytowany 2x, ostatnio: radek moczarski
MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:5 dni
  • Postów:644
0
edytowany 1x, ostatnio: Markuz
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

nadal nie działa

Kopiuj
function send(){
    $('#wyslij').on('click',function(){
        console.log('test')
        $.ajax({
            url: 'dbsend.php',
            type: 'POST',
            dataType: 'json',
            data: {
               id: $('id').val(),
               date: $('date').val(),
               type: $('type').val(),
               text: $('text').val()
            },
            success: function(result){
            },
            error: function(error){
                console.log(error);
            }
        });
    })

}```
MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:5 dni
  • Postów:644
0

Mógłbyś rozwinąć "nie działa"? Jakiś błąd php/js?

radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

Napisałem w poscie o co chodzi nie jestem wstanie wczytać danych do skryptu php za pomocą metody $_POST Undefined index

L7
  • Rejestracja:ponad 13 lat
  • Ostatnio:37 minut
  • Postów:433
0

No bo niby co ma ten Twój skrypt przekazać? Jeżeli przekazujesz dane w jquery to wskaż po czym zbierasz te dane. Przykładowo, dla ID powinno być:
id: $('#id').val()
jeżeli pobierasz dane z INPUT o id = 'id'

Druga rzecz, po co jest to:
dataType: 'json',

edytowany 1x, ostatnio: leonpro778
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

ten skrypt ma pobrać dane z formularza za pomocą .val() i za pomocą tych danych utworzyć zapytanie w bazie danych.
poprawiłem literówki ale nadal nie działa

Kopiuj
function send() {
    $('#wyslij').on('click', function () {
        console.log('test')
        $.ajax({
            url: 'dbsend.php',
            type: 'POST',
            data: {
                date: $('#date').val(),
                type: $('#type').val(),
                text: $('#text').val()
            },
            success: function (result) {
            },
            error: function (error) {
                console.log(error);
            }
        });
    })

}

drugi skrypt ma pobrać dane i na ich podstawie skrypt php zwraca obiekt JSON z wybranymi rekordami

Kopiuj
function search() {
    $('#button').on('click', function () {
        $.ajax({
            url: 'search.php',
            type: 'POST',
            dataType: 'json',
            data: {
                zapytanie: $('#zapytanie').val()
            },
            success: function (result) {
                var member = result;
                let resHTML = '';
                for (var i = 0; i <= result.length; i++) {
                    resHTML += '<a href="#" class="member" id=' + i + '>' + result[i].id + '</a>' + ' ' + result[i].date + ' ' + result[i].type + ' ' + result[i].text + '<br>';
                    $('#result').html(resHTML);
                }
                return member;
            },
            error: function (error) {
                console.log(error);
            }
        });
    })
}
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0
  1. Twój kod wygląda dobrze - otwórz konsolę deweloperską w przeglądarce, wejdź do zakładki Network i pokaż, co dokładnie zwraca Ci Twoje wywołanie $.ajax.

  2. Nazwy commitów powinny opisywać wprowadzone zmiany (np. Fix a bug where $_POST didn't contain proper values.), a nie być zlepkiem losowych słów (np. ajax nie dziala).

  3. Masz off by one error w handlerze success w drugim kodzie (i <= result.length).

  4. Nie musisz ręcznie zlepiać HTMLa:

Kopiuj
result.forEach((item) => {
  let $a = $('a');

  $a.attr('href', '#');
  $a.text(item.id);

  /* ... */

  $a.appendTo(
    $('#result')
  );
});

edytowany 5x, ostatnio: Patryk27
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

to jest zwracane w konsoli
{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
abort
:
ƒ (a)
always
:
ƒ ()
catch
:
ƒ (a)
done
:
ƒ ()
fail
:
ƒ ()
getAllResponseHeaders
:
ƒ ()
getResponseHeader
:
ƒ (a)
overrideMimeType
:
ƒ (a)
pipe
:
ƒ ()
progress
:
ƒ ()
promise
:
ƒ (a)
readyState
:
4
responseText
:
"
Notice: Undefined index: date in C:\xampp\htdocs\dbtest\dbsend.php on line 3

Notice: Undefined index: type in C:\xampp\htdocs\dbtest\dbsend.php on line 4

Notice: Undefined index: text in C:\xampp\htdocs\dbtest\dbsend.php on line 5
↵"
setRequestHeader
:
ƒ (a,b)
state
:
ƒ ()
status
:
200
statusCode
:
ƒ (a)
statusText
:
"OK"
then
:
ƒ (b,d,e)
proto
:
Object

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Napisałem: zakładka Network.


radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

to samo co w konsoli
Notice: Undefined index: date in C:\xampp\htdocs\dbtest\dbsend.php on line 3

Notice: Undefined index: type in C:\xampp\htdocs\dbtest\dbsend.php on line 4

Notice: Undefined index: text in C:\xampp\htdocs\dbtest\dbsend.php on line 5

Kopiuj
<?php
require_once "connect.php";
$date = $_POST['date'];
$type = $_POST['type'];
$text = $_POST['text'];
$connect = @new mysqli($host,$db_user,$dbpassword,$db_name);
 if($connect->connect_errno!=0){
    echo $connect->connect_errno;
 }else{
     $querry = "INSERT INTO test SET date='$date',type='$type',text='$text'";
     $connect->query($querry);
     $connect->close();
 }


?>
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Możesz wrzucić screenshota z tej zakładki?


edytowany 1x, ostatnio: Patryk27
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

screenshot-20180604181311.png

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Oki, to jeszcze ten sam widok, tylko z otwartą zakładką Headers, a nie Preview.


radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

screenshot-20180604181633.png

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Nic niżej tam nie ma?


radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

screenshot-20180604181935.png

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

I niżej już nic nie ma, tak?
Żadnego form data?


radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

ajax działa jak najbardziej poprawnie napisałem to na samym początku gdy na sztywno ustale zapytanie to json zwraca sie poprawnie problem jest z metodą $_POST[]

Patryk27
Niestety nie mam pojęcia, co tutaj napisałeś.
SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
0

przycisk wyslij to button czy submit ?


Bydgoszcz, Senior .Net Developer
Patryk27
Jaką wprowadza to różnicę?
SL
submit by się wykonywał przed ajaxem, ale ok spojrzałem sobie w kod i już widzę że to button.
Patryk27
Dlaczego submit wykonałby się przed ajaxem? Jak wtedy miałoby funkcjonować evt.preventDefault(), skoro wykonywałoby się później?
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

button ale skrypt wywouje ajaxem wiec submit jest raczej niewskazany

radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

taki skrypt wywołany ajaxem porwanie zwraca JSON'a do js'a

Kopiuj
<?php
header('Content-Type: application/json');
require_once "connect.php";
$connect = @new mysqli($host,$db_user,$dbpassword,$db_name);
$zapytanie = 'one';
 if($connect->connect_errno!=0){
    echo $connect->connect_errno;
 }else{
     $querry = "SELECT * FROM `test` WHERE type='$zapytanie'";
     $result = $connect->query($querry);
     $preJSON = array();
     foreach($result as $key=>$data){
        $preJSON[$key] = $data;
    }
     $myJSON = json_encode($preJSON);
     echo  $myJSON;
     
     $connect->close();
 }


?>
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

No dobra, ale w tym skrypcie nie masz żadnego $_POST...


radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

tutaj jest i nie działa

Kopiuj
<?php
header('Content-Type: application/json');
require_once "connect.php";
$connect = @new mysqli($host,$db_user,$dbpassword,$db_name);
$type = $_POST["type"];
 if($connect->connect_errno!=0){
    echo $connect->connect_errno;
 }else{
     $querry = "SELECT * FROM `test` WHERE type='$type'";
     $result = $connect->query($querry);
     $preJSON = array();
     foreach($result as $key=>$data){
        $preJSON[$key] = $data;
    }
     $myJSON = json_encode($preJSON);
     echo  $myJSON;
     
     $connect->close();
 }
?>```
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Czy wywołanie ajax działa poprawnie, gdy wpiszesz dane na sztywno w JSie?


edytowany 1x, ostatnio: Patryk27
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

naprawione

Patryk27
Opisz zatem w jaki sposób to naprawiłeś - dzięki temu pomożesz osobom, które w przyszłości natrafią na ten wątek.
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

Jednak nie działa, tak gdy wpisze zapytanie na sztywno ajax działa i poprawnie zwraca jsona, ale jest wstanie przkazać danych do zmiennej za pomocją metody $_POST[]

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Powtórzę jeszcze raz: czy gdy w JavaScripcie wpiszesz na sztywno wartości - czy działa?


SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
0

a co ci wyrzuca var_dump($_POST) ?


Bydgoszcz, Senior .Net Developer
radek moczarski
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:29
0

nie działa

Kopiuj
                zapytanie: 'one'
            }```
co mam uzyskać tym vardumpem bo nie rozumiem

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.