2016-04-15 10 views
1

Ich habe Probleme, den Wert eines Optionsfelds anzuzeigen, auf das ich in meiner grundlegenden Webanwendung klicke, an der ich gerade arbeite.Radiobutton-Wert kann nicht mit AJAX und PHP angezeigt werden

Hier ist meine ajax.js Datei:

$('#selection').change(function() { 
    var selected_value = $("input[name='kobegreat']:checked").val(); 

    $.ajax({ 
     url: "kobegreat.php", 
     data: selected_value, 
     type: "POST", 
     datatype: "json", 

     success: function(json) { 
      var test1 = $("<p></p>").text(json["name"]); 
      $("h3").append(test1); 
      alert("AJAX was a success"); 
     }, 
     cache: false 
    }); 
}); 

Und meine kobegreat.php Datei:

<?php 

    if($_SERVER['REQUEST_METHOD] == "POST") { 
     $value = $POST['kobegreat']; 
     $return = $_POST; 
     if($return["name"] == "") { 
      $return["name"] = $value; 
     } 
     echo json_encode($return); 
    } 
?> 

HTML Code, den ich meinen Wert versuche auf anzuzeigen:

<h2>Select a Great Kobe Moment.</h2> 
<form id="selection" method="get"> 
    <input type="radio" name="kobegreat" value="kobe1" checked/>Kobe1 
    <input type="radio" name="kobegreat" value="kobe2"/>Kobe2 
    <input type="radio" name="kobegreat" value="kobe3"/>Kobe3 
</form> 

<div id="target"> 
    <h3>Great Kobe Moment!</h3> 
</div> 

Alles, was ich will ist, dass das Programm den Wert unter einer meiner Überschriften auf meiner Webseite anzeigt, aber das tut es nicht. Ich bekomme die Warnung, dass AJAX im Abschnitt completed: ausgeführt wurde, aber ich erhalte auch einen Fehler im Log, der besagt, dass json nicht definiert ist. Suchen Sie überall nach Hilfe zu diesem Problem, danke im Voraus für die Hilfe.

+2

'.text (json [" name]) 'Sie vermissen etwas hier –

+2

Auch' date: selected_value, '... Es sollte' data: {date: selected_value}, 'right? – Rayon

+2

Sie werden falsch Werte in PHP hier $ POST ['kobegreat'] –

Antwort

2

Wenn ich Sie richtig verstehe, dann versuchen Sie einfach, den Namen des ausgewählten Optionsfelds an Ihre Datei kobegreat.php zu übergeben und als Antwort zurückzusenden. Versuchen Sie folgendes:

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script> 
</head> 
<body> 
<h2>Select a Great Kobe Moment.</h2> 
<form id="selection" method="get"> 
    <input type="radio" name="kobegreat" value="kobe1" checked/>Kobe1 
    <input type="radio" name="kobegreat" value="kobe2"/>Kobe2 
    <input type="radio" name="kobegreat" value="kobe3"/>Kobe3 
</form> 

<div id="target"> 
    <h3>Great Kobe Moment!</h3> 
</div> 

<script> 
    $('#selection').change 
    (
     function() 
     { 
      var selected_value = $("input[name='kobegreat']:checked").val(); 

      $.ajax 
      ( 
       { 
        url: "kobegreat.php", 
        dataType : "json", 
        method: "POST", 
        cache: false, 
        data: { selected_value : selected_value }, 

        success: function(response) 
        { 
         var test1 = "<p>"+response+"</p>"; 
         $("h3").append(test1); 
         alert("AJAX was a success"); 
        } 
       } 
      ); 
     } 
    ); 
</script> 
</body> 
</html> 

kobegreat.php

<?php 

    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
     $value = filter_input(INPUT_POST, "selected_value"); 

     if (isset($value)) 
     { 
      echo json_encode($value); 
     } 
    } 

Tipps: Sie sollten sich nicht direkt auf die superglobalen Array $ _POST zugreifen, immer eine Filterfunktion verwenden, weil es sicherer ist.

+0

ist es notwendig, '$ .ajax' zu verwenden, und benötigen Sie' json'? – Black

+0

Ich werde es für das, was ich auf dem nächsten whic planen, brauchen h zieht Bildverknüpfungen aus einer MySQL-Datenbank und zeigt ein Bild an, je nachdem, welcher Radiobutton ausgewählt wurde. – Scott

+0

Ok, ich habe den Code aktualisiert. – Black