jquery ajax request result undefined



我的PHP返回了一个字符串。我从 $.ajax 调用 PHP 脚本,并尝试将字符串放入全局变量中以进行进一步操作。它说变量是未定义的。你能帮我吗?

(我使用dataType : "jsonp"来避免此处回答的错误 Ajax 跨源请求被阻止:同源策略不允许读取远程资源)

My JavaScript (Jquery, Ajax, ...) script

var my_data;
function get_my_data(){
$.ajax({
    type: 'GET',
    url: 'http://localhost:8012/My_PHP_scripts/test_1.php',
    dataType : "jsonp",
    crossDomain:true,
    success: function (my_data){
        console.log(my_data);
    }
    });
}
$( document ).ready(get_my_data);

PHP脚本

<?php
$user = 'JOHN';
echo json_encode($user);
?>

网页代码

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript" src="MyJS.js"></script>
</head>
<body>
</body>
</html> 

更新

PHP 脚本

<?php
$name     = 'JOHN';
$encoded2 = json_encode(array('name'=>$name));    
echo $encoded2;
die( $encoded2 );
?>

JS脚本

var my_data;
function get_my_data(){
$.ajax({
    type: 'GET',
    url: 'http://localhost:8012/My_PHP_scripts/test_1.php',
    dataType : "jsonp",
    crossDomain:true,
    success: function (result){
        my_data = result;
        console.log(my_data.name);
        console.log(result.name);
    }
    });
alert(my_data.name);
}
$( document ).ready(get_my_data);

您没有获得有效的 JSON,因为您的 PHP 代码只编码了一个纯字符串......你为什么不在PHP脚本中尝试这样的东西呢?

你的JS可以像这样更好:

function get_my_data(evt) {
    $.ajax({
        type: 'POST',
        url: 'https://some-domain.ch/test.php',
        dataType: "json",
        crossDomain: true,
        success: function(my_data) {
        alert(my_data.name);
        }
    });
}

确认这一点 这里.

<?php   
    header('Access-Control-Allow-Origin: *');   //<== ALLOW ACCESS TO ALL...
    header('Content-Type: application/json');   //<== TELL HEADER TO DELIVER JSON-TYPE DATA 
    $user = array('name'=>'JOHN');
    die( json_encode($user) );     

现在,您将拥有一个有效的 JSON 数据,您可以像这样访问它:

    my_data.name;    // WILL OUTPUT:  JOHN

笔记:

    <?php 
        $name     = 'JOHN';
        $encoded1 = json_encode($name);    
        die( $encoded1 );         //<== RESULT: 'JOHN'           |==>[INVALID JSON - STRING]
        $name     = 'JOHN';
        $encoded2 = json_encode( array('name'=>$name) );    
        die( $encoded2 );         //<== RESULT: {"name":"JOHN"}  |==>[VALID JSON]

在这里进行测试

问题是你的全局变量my_data和成功函数的参数变量不是同一个变量。您可以更改参数名称,然后将其值分配给全局变量。

success: function (result){ my_data = result; }

检查这个小提琴以澄清这一点。

更新:您也有@Poiz回答的问题

相关内容

  • 没有找到相关文章

最新更新