Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery getJSON更新未更新_Jquery_Getjson - Fatal编程技术网

Jquery getJSON更新未更新

Jquery getJSON更新未更新,jquery,getjson,Jquery,Getjson,在本网站上: 我将其设置为,当您从左下拉框中选择一个区域时,它会使用jQuery.getJson为town菜单拉入towns 我的代码在每一页的页眉中都能工作,但在移动到外部文件时似乎已经损坏,或者可能是另一个更改损坏了它,当然我在传输到外部文件后检查了它 问题是一切似乎都很顺利。Firebug告诉我我有数据,但它不会更新selecttown 让我发疯 更新: 更新 我现在发现JSON解析器错误为无效JSON,但它以前工作正常,我没有更改它 我所做的唯一改变是,升级到jQuery的最新版本,JS

在本网站上:

我将其设置为,当您从左下拉框中选择一个区域时,它会使用jQuery.getJson为town菜单拉入towns

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

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

让我发疯

更新:

更新

我现在发现JSON解析器错误为无效JSON,但它以前工作正常,我没有更改它

我所做的唯一改变是,升级到jQuery的最新版本,JSON标准在最新版本1.4.2中发生了变化,但我无法进行测试

这是我的JSON:

<?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;
}?>

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

在对$.ajax的调用中,在数据类型选项中使用json而不是application/json

问题在于jQuery没有将HTTP响应内容转换为JSON,因此您的success函数正在迭代字符串

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

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

您需要将密钥用引号括起来:

[ 
{'optionValue': 'Altinkum', 'optionDisplay': 'Altinkum'},
{'optionValue': 'Bodrum', 'optionDisplay': 'Bodrum'},
{'optionValue': 'Cesme', 'optionDisplay': 'Cesme'},
// ... other entries ...
]

在这种情况下,使用源代码管理是非常有益的。这使得变更跟踪变得非常简单。这是我尝试的第一件事。不幸的是,它也不起作用。即使是简单地调用.getJSON并将响应中的每个项添加到元素中,Ajax也会出现相同的错误。事实证明,您是对的,在尝试向键添加引号时,我一定犯了错误。问题的产生是因为jQuery1.4改为使用本机JSON解析器,这与以前版本中的EVAL相反