jQuery无法从PHP脚本中读取JSON响应

时间:2012-08-18 22:38:00

标签: javascript jquery ruby-on-rails json

在我的表单中,我想用两个字段做点什么:

“website_domain”和“website_ip_address”

我正在尝试使用jQuery / JSON来调用PHP脚本,将website_domain传递给它,并接收包含该网站IP地址的JSON。

问题/症状描述:

它部分工作:在模糊时,它获取PHP脚本的URL。我可以在萤火虫中看到这么多。我得到200 OK。根据JSONLint,PHP脚本的输出是有效的JSON:

{ “场”: “website_ip_address”, “值”: “74.125.225.70”}

但在Firebug中,我没有JSON标签。我只有Params和Headers标签。甚至不是“响应”选项卡。

毋庸置疑,website_ip_address字段也没有填充我应该从PHP脚本的JSON输出中获取的数据。

我的PHP脚本:

可能需要注意的是,目前,这个PHP脚本位于与我的应用程序不同的域中。也许我的整个问题都是跨域的?

<?php 
    $domain = $_GET["domain_name"];
    $ip = gethostbyname($domain);
    // echo $ip;
    $json = array(
        'field' => 'website_ip_address',
        'value' => $ip,
        );
    header('Content-Type: text/plain');
    echo json_encode($json );
?>

我的jQuery / JSON脚本:

请注意,这是在Ruby On Rails应用程序视图中编写的。

:javascript
  $("#website_domain").bind("blur", function(e){
     $.getJSON("http://exampledomain.com/temp_getIP.php?domain_name=" +$("#website_domain").val(),
        function(data){
          $('#website_ip_address').val(data);
        });
});

我真的希望这不仅仅是我的语法错误。根据我在StackOverflow上找到的答案,我一直在写这个/重写2天,但没有用。我在这里错过了一些东西。

3 个答案:

答案 0 :(得分:2)

问题可能出在不同的域。之前我曾经这样做过。尝试使用php添加header("Access-Control-Allow-Origin: *")

答案 1 :(得分:2)

您当前正在尝试将JS对象(由解析的JSON响应形成)输出到该字段。您需要从中输出值。所以不是:

$('#website_ip_address').val(data); //data is an object, not a string

$('#website_ip_address').val(data.someValue); //output a property of the object

使用你的代码,我希望用一个对象的字符串表示填充该字段,即[object Object]。你没有提到这一点,所以我想知道a)你的成功函数是否正在解雇(检查一下 - 在其中粘贴一个console.log); b)你的jQ选择器是健全的。

答案 2 :(得分:0)

将jQuery代码放入文档中,例如:$(function(){ });

:javascript
$(function() {
    $("#website_domain").bind("blur", function(e){
        $.getJSON("http://exampledomain.com/temp_getIP.php?domain_name="+$("#website_domain").val(),
           function(data){
               $('#website_ip_address').val(data);
           });
        });
    });
});

你有一个缺失的结尾})