2011-04-05 73 views
0

當我嘗試通過AJAX更新整個選擇框時,只能第一次運行。在PHP方面,總是發送相同的信息,一次選項字段被禁用和其他時間選擇。通過AJAX更新選擇框

更換整個選擇框時是否存在一些問題?

這裏是JS代碼。

$(document).ready(function(){ 
$("select").change(function() { 

     tid=location.href.replace(/^.*\/|\.[^.]*$/g, '');  
     colores=$("#colores option:selected").val(); 
     tallas=$("#tallas option:selected").val(); 
     marcas=$("#marcas option:selected").val(); 
     genero=$("#genero option:selected").val(); 
     $.get("/ajax/getdata/" + tid + ";" + colores + ";" + tallas + ";" + marcas + ";" + genero, function(data){ 
        // Asignamos las nuevas opciones para el combo2 
     $(".content").html(data); 

     }); 
    }) 
}); 

回答

0

爲什麼使用「;」作爲你的價值觀的分離器? 您應該使用"data" parameter instead

var oData = { 
    'colores': colores, 
    'tallas': tallas, 
    'marcas': marcas, 
    'genero': genero 
} 
$.get("/ajax/getdata/", oData, function (data) { 
    // Asignamos las nuevas opciones para el combo2 
    $(".content").html(data); 
}); 

,並使用$ _GET []在你的PHP頁面:

<?php 
$colores = $_GET['colores']; 
$tallas = $_GET['tallas']; 
$marcas = $_GET['marcas']; 
$genero = $_GET['genero']; 

// Do what you need to do with this 
?> 

但是如果你的PHP總是返回相同的值和不應該,它可能是一個您的瀏覽器緩存問題:由於您對同一網址發出了請求,因此您的瀏覽器曾經打過電話,但之後爲每次下一次呼叫保留之前返回的數據(以減少帶寬使用)。 爲了避免此問題,您可以添加一個始終更改的參數(如時間戳)。

告訴我,如果這個答案對你有好處,或者我會根據你的適應症來調整它。

+0

$(「。content」)。html(data)返回整個select,而不是選項。所以我認爲這不是一個瀏覽器緩存問題,我認爲當新的選擇到達jQuery不刷新,所以它沒有作出第二次電話來檢索新內容 – MarcosRua 2011-04-05 18:07:01

+0

你可以發佈你的PHP代碼(並最終刪除不必要的)在爲了看看究竟你的PHP請做什麼? – 2011-04-05 18:34:24

+0

它是一個drupal模塊,它是最重要的功能。 http://pastebin.com/FCGkVubF – MarcosRua 2011-04-06 15:53:32