代码之家  ›  专栏  ›  技术社区  ›  Liam Bailey

getJSON更新未更新

  •  0
  • Liam Bailey  · 技术社区  · 14 年前

    在此网站上: http://www.rent-turkey-property.com/

    我的代码在每一页的页眉中都能工作,但在移到外部文件时似乎已经损坏了(或者另一个更改破坏了它,当然我在转移到外部文件后检查了它)

    问题是一切似乎都很顺利。Firebug告诉我我有数据,但它不会更新select#town

    快把我逼疯了。

    更新

    我唯一改变的是,为了测试我无法逆转的是升级到jQuery的最新版本,JSON标准在最新版本(1.4.2)中有没有改变。

    <?php
    if ($_GET['region'] == "Aegean") {
      echo <<<HERE_DOC
    [ 
    {optionValue: 'Altinkum', optionDisplay: 'Altinkum'},
    {optionValue: 'Bodrum', optionDisplay: 'Bodrum'},
    {optionValue: 'Cesme', optionDisplay: 'Cesme'},
    {optionValue: 'Dalaman', optionDisplay: 'Dalaman'},
    {optionValue: 'Dalyan', optionDisplay: 'Dalyan'},
    {optionValue: 'Fethiye', optionDisplay: 'Fethiye'},
    {optionValue: 'Icmeler', optionDisplay: 'Icmeler'},
    {optionValue: 'Gocek', optionDisplay: 'Gocek'},
    {optionValue: 'Kusadasi', optionDisplay: 'Kusadasi'},
    {optionValue: 'Marmaris', optionDisplay: 'Marmaris'},
    {optionValue: 'Oludeniz', optionDisplay: 'Oludeniz'}
    ]
    HERE_DOC;
    } else if ($_GET['region'] == "Mediterranean") {
      echo <<<HERE_DOC
    [
    {optionValue: 'Alanya', optionDisplay: 'Alanya'},
    {optionValue: 'Antalya', optionDisplay: 'Antalya'},
    {optionValue: 'Belek', optionDisplay: 'Belek'},
    {optionValue: 'Kalkan', optionDisplay: 'Kalkan'},
    {optionValue: 'Kas', optionDisplay: 'Kas'},
    {optionValue: 'Kemer', optionDisplay: 'Kemer'},
    {optionValue: 'Saklikent', optionDisplay: 'Saklikent'},
    {optionValue: 'Side', optionDisplay: 'Side'}
    ]
    HERE_DOC;
    } else if ($_GET['region'] == "Istanbul") {
      echo <<<HERE_DOC
    [{optionValue: 'Istanbul', optionDisplay: 'Istanbul'}]
    HERE_DOC;
    }?>
    
    3 回复  |  直到 14 年前
        1
  •  2
  •   MikeWyatt    14 年前

    您需要将密钥括在引号中:

    [ 
    {'optionValue': 'Altinkum', 'optionDisplay': 'Altinkum'},
    {'optionValue': 'Bodrum', 'optionDisplay': 'Bodrum'},
    {'optionValue': 'Cesme', 'optionDisplay': 'Cesme'},
    // ... other entries ...
    ]
    
        2
  •  0
  •   ZippyV    14 年前

    尝试将ajax响应的内容类型更改为application/json而不是text/html。

        3
  •  0
  •   MikeWyatt    14 年前

    在中使用“json”而不是“application/json” dataType 调用$.ajax()时的选项。

    问题是jQuery没有将HTTP响应内容转换为JSON,因此success函数是遍历字符串。

    此外,迭代函数引用的是原始数组,而不是当前项。任意使用 resp[index] , this ,或添加 element

    success: function(resp){
        var options = '';
        $.each(resp,function(index) {
            options += '<option value="' + this.optionValue + '">' + this.optionDisplay + '</option>';
        }