-2

我在 Xampp 上的 PHP 代码

<?php
$data = ((**Refer the JS fiddle Link below for JSON data**));
//header('Content-Type: application/json');
echo $data;
?>

我的客户 Javascript 代码

function clickbtn(){
$.ajax({
    url: 'http://localhost/json/index.php',
                    type: 'GET',
                    contentType:'json',
                    //data: JSON.stringify(data),
                    success:function(dataF){
                    console.log('SuccessMsg:'+dataF);
                        alert(dataF.surveyId);
                    },
                    error:function(){
                        alert('Error: Unable to connect to the server');
                    }
                });
} 

我可以从浏览器控制台上的 php 服务器转储 JSON。但我无法在警报框中看到警报“SurveyID”值。

请获取 JS fiddle 链接中可用的 JSON 数据并将其粘贴到您的 PHP 脚本中并进行测试。

如果您在 chrome 上进行测试,请添加((Chrome 安装路径))--disable-web-security以允许跨域源策略,然后在最后运行 JSfiddle 链接。

用于客户端 JS 和 PHP JSON 数据的JSfiddle

4

2 回答 2

2

如果您需要由 jQuery 自动解析 JSON 响应,则应该使用该dataType选项。contentType

$.ajax({
    url: 'http://localhost/json/index.php',
                    type: 'GET',
                    dataType:'json', /* dataType instead of contentType */
                    ...
                    success:function(dataF){
                        console.log('SuccessMsg:'+dataF);
                        alert(dataF.surveyId);
                    },
                    ...
                });
于 2013-06-26T07:43:17.897 回答
1

有时 jQuery(或浏览器?)响应的是字符串而不是对象。您可能必须检查它并将其解析为 json。我经常遇到这个问题,所以我每次都检查一下。

function clickbtn(){
$.ajax({
    url: 'http://localhost/json/index.php',
                    type: 'GET',
                    success:function(dataF){
                    console.log('SuccessMsg:'+dataF);
                        if(typeof dataF != 'object')
                        {
                            dataF = jQuery.parseJSON(dataF);
                        }
                        alert(dataF.surveyId);
                    },
                    error:function(){
                        alert('Error: Unable to connect to the server');
                    }
                });
} 

我认为 dataType 参数有时会被忽略:(

于 2013-06-26T07:56:25.787 回答