Javascript Can';t从jQuery ajax调用获取json数据

Javascript Can';t从jQuery ajax调用获取json数据,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我试图通过jQueryAjax调用从data.php获取数据 我的代码如下所示: var jsonData; $.ajax({ url: 'data.php', success: function(response) { jsonData = response; } }); 我的data.php文件正在返回json格式的数据,但有些文本是Unicode格式的。 我在data.php和javascript文件上设置了字符集

我试图通过jQueryAjax调用从
data.php
获取数据

我的代码如下所示:

var jsonData;

$.ajax({
        url: 'data.php',
        success: function(response) {
            jsonData = response;
        }
});
我的
data.php
文件正在返回json格式的数据,但有些文本是Unicode格式的。 我在
data.php
和javascript文件上设置了字符集,但仍然无法访问相应的数据对象


有什么想法吗?

尝试将
数据类型:“json”
放在ajax调用中:

var jsonData;

$.ajax({
        url: 'data.php',
        dataType: 'json',
        success: function(response) {
            jsonData = response;
        }
});
data.php

header('Content-type: application/json'); 


您还可以使用此机制:

$.getJSON( "data.php", function( response ) {
    jsonData = response;
});

如果您只想获取JSON:)

则更简洁。您应该在
PHP
中使用
header()
函数来设置正确的响应头(内容类型和字符集):

您还应在HTML页面顶部重复此操作:

<meta http-equiv="Content-type" value="text/html; charset=UTF-8" />

另请参见:

PHP

try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->query('SET NAMES utf8;');
    $stmt = $dbh->prepare($sql);  
    //$stmt->bindParam("id", $_GET[id]);
    $stmt->execute();

    $advice = $stmt->fetchAll(PDO::FETCH_OBJ);
    $dbh = null;
    echo '{"items":'. json_encode($advice) .'}'; 
} catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
}
阿贾克斯


在调用
$.ajax()
之后,是否立即尝试访问
jsonData
变量?因为ajax调用是异步的,所以此时它将是未定义的。在
success
处理程序中执行处理。(如果不是这样,请单击“编辑”并添加“无法访问”在本例中实际含义的详细信息。在您的
响应中实际出现了什么?
变量?)。。甚至不知道这个函数的存在。。很高兴知道:)
<meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->query('SET NAMES utf8;');
    $stmt = $dbh->prepare($sql);  
    //$stmt->bindParam("id", $_GET[id]);
    $stmt->execute();

    $advice = $stmt->fetchAll(PDO::FETCH_OBJ);
    $dbh = null;
    echo '{"items":'. json_encode($advice) .'}'; 
} catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
}
 var temp;
    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: serviceurl,
            data: "{'userName':'" + userName + "' , 'password': '" + password                                   
                   + "'}",
            dataType: "json",
            success: function(msg) {
                            temp = jQuery.parseJSON(msg.d);
                          },
            error: function(xhr, ajaxOptions, thrownError) {}

        });