1

解决了

问题已解决,请参阅我的解决方案的底部答案

我一直在努力解决这个问题,我阅读了关于$.ajax()

这是脚本

<script src="jquery-1.7.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(
        function()
        {
            $('#getData').click(
                function()
                {
                    $.ajaxSetup({
                        cache: false
                    });
                    $.ajax(
                    {
                        type: 'GET',
                        url: 'http://localhost/Practice/Jquery/ajax/phone_data.php',
                        data: {rating: 5},
                        dataType: 'json',
                        success: function(data)
                        {
                            $('#display').html(data.phone);
                        },
                    error: function(response)
                    {
                        alert(response.responseText);
                    }
                    });//end ajax

                });//end click
        });//end ready
</script>

<body>
                <input type="button" id="getData" name="submitButton" value="getJson!" />

    <div id="display">
        replace me with phone data
    </div>
</body>

这是phone_data.php

<?php
header('Content-Type: application/json; charset=utf-8');
$data['phone'] = '989898989';
$data['username'] = 'sendyHalim';
echo json_encode($data, true);
exit();

当我单击按钮时,萤火虫显示请求正常,但没有任何反应..

所以我通过firebug检查ajax调用的“响应”并得到:

Reload the page to get source for: http://localhost/Practice/Jquery/ajax/phone_data.php?rating=5&_=1368793325734

更新 我更新了我的代码,我搜索了一些方法来获取响应文本(使用responseText来自的属性response),但它只是用空字符串(什么都没有)发出警报。

这是我单独运行 phone_data.php 脚本时的输出:

{"phone":"989898989","username":"sendyHalim"}

"view page info"从 Firefox 确认内容类型是"application/json"

4

3 回答 3

1

解决了

伙计们,这是我的错,哈哈!只是为了教育,如果你和我有同样的问题(脚本是正确的等等)......问题是我是display_json.html从本地文件打开的。这意味着我右键单击该文件,然后用 Firefox 打开。但是,当我通过 localhost/pathToYourScript 打开它时,它会运行。

我没有得到的一件事是,如果我使用指向另一个域的 url 从本地文件中打开它(如文森特的答案中的那个),它可以工作,但是当我使用本地 url 时,它不会。

感谢您的提示和答案,你们真的帮助了我。

于 2013-05-17T13:32:23.983 回答
1

我复制粘贴了您的代码并替换了 json 请求的 url。

查看 JSON URL。http://echo.jsontest.com/key/value/one/two

我为 html 输出修改了一些 jQuery 代码。

$(document).ready(function () {
    
    $('#getData').click(function () {
        
        var jsonUrl = 'http://echo.jsontest.com/key/value/one/two';
        $.ajaxSetup({
            cache: false
        });
        $.ajax({
            type: 'GET',
            url: jsonUrl,
            data: {},
            dataType: 'json',
            success: function (data) {
                $('#display').html(data.one + ' and ' + data.key);
            },
            error: function(xhr){
                $('#display').html('error fetching data');
            }
        }); //end ajax
    }); //end click
}); //end ready

这是您的代码:http: //jsfiddle.net/wuaNC/

于 2013-05-17T12:42:12.560 回答
0

尝试为 UTF-8 全局化您的脚本?

于 2013-05-17T12:39:15.487 回答