AJAX PHP $_POST[] nie działa

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

0

nadal nie działa

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);
            }
        });
    })

}```
0

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

0

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

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',

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

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

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);
            }
        });
    })
}
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:

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

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

  /* ... */

  $a.appendTo(
    $('#result')
  );
});
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

0

Napisałem: zakładka Network.

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

<?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();
 }


?>
0

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

0

screenshot-20180604181311.png

0

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

0

screenshot-20180604181633.png

0

Nic niżej tam nie ma?

0

screenshot-20180604181935.png

0

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

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[]

0

przycisk wyslij to button czy submit ?

0

button ale skrypt wywouje ajaxem wiec submit jest raczej niewskazany

0

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

<?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();
 }


?>
0

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

0

tutaj jest i nie działa

<?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();
 }
?>```
0

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

0

naprawione

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[]

0

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

0

a co ci wyrzuca var_dump($_POST) ?

0

nie działa

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1