2017-01-25 4 views
0

Kann jemand vorschlagen, warum dies nicht die Autocomplete-Daten lädt? Wenn ich die URL im Ajax-Aufruf fest codiere, funktioniert es, aber nicht mit meinem Code, um die URL-Quelle zu ändern? Ich bin mir nicht sicher, warum es nicht funktionieren würde. Wenn Sie auf der Seite als Ganzes aussehen wollen, die hartcodierte Version ist: hereAjax JavaScript Radio Button Problem

 var starterSearchData; 
    $(function() { 
    var destination; 
     elementVal = $("input[name=radio]"); //note returns array of radio button elements 
     if (elementVal[0].checked){ 
     destination= "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php", 
     } 
     if (elementVal[0].checked){ 
     destination= "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/italian.php", 
     } 



    //Starter Autocomplete (Spanish)   
    var starterSearchData; 
    $(function() { 
     $.ajax({ 
      url: destination, 
      dataType: "jsonp", 
      async: false, 
      success: function(data) { 
       starterSearchData = $.map(data, function(item) { 
        if (item.course == "starter") 
         return item.name; 
         return item.price; 

       }); 
       EnableAutoComplete(); 
      }, 
      error: function(xhr, status, error) { 
       var err = eval("(" + xhr.responseText + ")"); 
       alert(err.Message); 
      } 
     }); 

     function EnableAutoComplete() { 
      $("#starter").autocomplete({ 
       source: starterSearchData, 
       minLength: 2, 
       delay: 010 
      }); 
     } 
    }); 

Radioknopf:

   <div id="radio"> 
       <input type="radio" id="radio1" name="radio"><label for="radio1">Spanish</label> 
       <input type="radio" id="radio3" name="radio"><label for="radio3">Italian</label> 
      </div> 
+1

Sie überprüfen gleiches Element url Wert zuweisen, deshalb Sie entweder die zweite URL, wenn der erste Funk ausgewählt wurde, oder gar nicht, wenn der zweite Funk ausgewählt - 'if (elementVal [ 0] .geprüft) ... '. –

Antwort

1

Sie haben Syntaxfehler an einigen Stellen in Ihrem Code. Dies funktioniert:

var starterSearchData; 
$(function() { 
    var destination, 
     elementVal = $("input[name=radio]"); 

    if (elementVal[0].checked) { 
    destination = "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php"; 
    } 
    if (elementVal[1].checked){ 
    destination= "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/italian.php"; 
    } 

    $.ajax({ 
     url: destination, 
     dataType: "jsonp", 
     async: false, 
     success: function(data) { 
      starterSearchData = $.map(data, function(item) { 
       if (item.course == "starter") 
        return item.name; 
        return item.price; 

      }); 
      EnableAutoComplete(); 
     }, 
     error: function(xhr, status, error) { 
      var err = eval("(" + xhr.responseText + ")"); 
      alert(err.Message); 
     } 
    }); 

    function EnableAutoComplete() { 
    $("#starter").autocomplete({ 
     source: starterSearchData, 
     minLength: 2, 
     delay: 010 
    }); 
    } 
});