Bir JavaScript dosyasından aynı uygulamadaki bir PHP dosyasına POST isteği gönderdiğimde, PHP betiği her zaman GET isteği olarak okur. Niçin?

0

Soru

Web sayfalarımdan birinde dinamik bir formum var. Form, verileri komut dosyasında depolar ve kullanıcı formdan daha fazla veri ekledikçe güncelleştirir. Bu, js'de oluşturduğum nesnedir:

const survey = {
   title: '',
   createdBy: '',
   description: '',
   openingMsg: '',
   thankyouMsg: '',
   questions: [],
}

Sorular dizisi Soru nesnelerini tutar. İşte sınıf:

class Question {
   constructor(id) {
      this.id = id
   }
   questionText = ''
   type = ''
   choices = new Map()
}

Gönder düğmesine şöyle bir olay dinleyicisi ekliyorum:

const saveSurveyBtn = document.getElementById('saveSurvey')
surveyForm.addEventListener('submit', saveSurvey)

ve saveSurvey işlevi şöyle görünür:

function saveSurvey(e) {
    e.preventDefault()

    fetch('../../actions/save-survey.php', {
        method: 'POST',
        body: JSON.stringify(survey),
        headers: {
            "Content-type": "application/json;charset=UTF-8"
        }
    })
}

Gördüğünüz gibi, verileri js'den yerel bir php betiğine göndermeye çalışıyorum. Php betiğine ulaşana kadar her şey yolunda. Sorun şu; getirme çağrımda method: POST kullanmamdan bağımsız olarak, her zaman bir GET isteği olarak gönderilir. Niçin? Bu durumu nasıl düzeltebilirim?

fetch javascript php
2021-11-22 15:46:57
1

En iyi cevabı

0

Tamam, form verilerimin neden gönderilmediğini size söyleyemem ve bir GET isteği olarak gönderildiğini onayladım. Ama bu sorunu böyle çözdüm.

Forma gizli bir alan ekledim ve "gönder" düğmesini "düğme"olarak değiştirdim. Daha sonra bu düğmeyi JS aracılığıyla tuttum ve üzerine bir tıklama dinleyicisi ayarladım. Kullanıcı düğmeye bastığında, önce JSON seri hale getirilmiş anket nesnemi gizli alana atarım. Daha sonra formu manuel olarak gönderdim ve POST yoluyla PHP betiğine gönderildi. Formun yöntemi her zaman" post " idi, ancak bu başlangıçta önemli görünmüyordu. Nedenini bilmiyorum ama işte formdaki girdimim:

<input name="survey" id="survey" type="hidden" value="">

sonra şuna benzeyen düğmeyi alıyorum.:

<button type="button" class="btn btn-success" id="saveSurvey">Save Survey</button>

artık "gönder"türünde olmadığına dikkat edin. Daha sonra buna bir click olay dinleyicisi ekliyorum ve tıklandığında bu işlevi çağırıyorum:

function saveSurvey(e) {
    document.getElementById('survey').value = JSON.stringify(survey)
    surveyForm.submit()
}

Bu işe yaradı. Kendi soruma tam olarak cevap verip vermediğimi bilmiyorum, bu yüzden başka biri daha iyi bir cevapla gelirse bu yazıyı ayarlayacağım. Yardım için herkese teşekkürler.

2021-11-23 22:22:10

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................