2011-04-05 68 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