Я пытаюсь передать мою переменную topic из этой функции javascript в мой php-файл faqs.php. Я знаю, что вы можете сделать это с помощью формы, однако эта функция вызывается при нажатии текста на HTML-странице. Я пробовал AJAX, но у меня это не сработало, и я чувствую, что должен быть более простой способ.

Функция getFaqs:

function getFaqs(topicId, topic) {
    $("#topic-container").html("");

    //insert javascript to send 'topic' to php file here

    $.getJSON("faqs.php", function(data) {
        if(data == "") {
            $("<div>", {class: "list-group-item", text: "Please add FAQs."}).appendTo($("#topic-container"));
        }
        $.each(data, function(faqId, faq){
            $("<div>", {id: "faq" + faqId, class: "list-group-item", text: faq}).appendTo($("#topic-container"));
        });
    });   
    return false; 
}

Faqs.php :

<?php
header('Content-Type: application/json; charset=utf-8');

//insert some php to get 'topic' here

if(isset($_POST['topic'])){
    $topic=$_POST['topic'];
    $clean_topic = preg_replace('/\s+/', '', $topic);
}else{
    echo json_encode("Please enter a topic!");
}
$musicalinstruments = array("Question1"=>"What is the best musical instrument in the world?", "Answer1"=>"The English concertina", "Question2"=>"How many double bass players does it take to change a light bulb?", "Answer2"=>"None, the piano player can do that with his left hand");
$programminglanguages = array("Question"=>"Why do programmers confuse halloween and christmas?", "Answer"=>"Because Oct 31 = Dec 25");
$varietiesofpizza = array("Question"=>"Should I eat more pizza?", "Answer"=>"Yes. Always.");

echo json_encode ($topic);

?>
1
Anna 8 Янв 2017 в 23:17

4 ответа

Лучший ответ

Вставьте тему как переменную GET в JavaScript

$.getJSON("faqs.php?topic=sometopic", function(data) {

А затем прочитать эту переменную GET в PHP

if(isset($_GET['topic'])){
1
Tomislav Darlic 8 Янв 2017 в 20:24

$.getJSON делает запрос GET, тогда как $.ajax является основным компонентом для отправки и связи с сервером. Вот грубый код, который сделает это просто отлично.

$.ajax({
    url: 'faqs.php', 
    type: 'POST',
    dataType: 'json',
    data: { topic: topics }, // topics is your topics varaible from the JS scope
    success: function(data) {
        if (data == "") {
            $("<div>", {
                class: "list-group-item",
                text: "Please add FAQs."
            }).appendTo($("#topic-container"));
        }
        $.each(data, function(faqId, faq) {
            $("<div>", {
                id: "faq" + faqId,
                class: "list-group-item",
                text: faq
            }).appendTo($("#topic-container"));
        });
    },
    error: function(xhr) {
        console.log('error :(');
    }
});
0
Adam Azad 8 Янв 2017 в 20:24

Вы можете отправить его по URL, вот код для него xmlhttp.open ("GET", "phpFile.php? q =" + str, true); xmlhttp.send ( ) ; где q - это переменная, которая используется для доступа к значению перикулярной переменной, в данном случае str, в файле php

0
Zubair Zaheer 8 Янв 2017 в 20:26

Если вы хотите использовать POST:

$.post('test.php', { name: "Anna" }, function(response) {
// Do something with the request, data is JSON object.
}, 'json');

И читать в test.php в переменной POST.

$_POST['name'] // Anna
0
Peter 8 Янв 2017 в 20:57