1

在我的表单中,我想对两个字段做一些事情:

“website_domain”和“website_ip_address”

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

问题/症状描述:

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

{"field":"website_ip_address","value":"74.125.225.70"}

但在 Firebug 中,我没有 JSON 选项卡。我只有参数和标题选项卡。甚至没有响应选项卡。

不用说, 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 天,但无济于事。我只是在这里遗漏了一些东西。

4

3 回答 3

2

问题可能出在不同的域上。我以前也有过这样的。尝试在php中添加header("Access-Control-Allow-Origin: *")

于 2012-08-18T22:48:06.300 回答
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)你的成功功能是否正在触发(检查这个 - 将a插入console.log其中);b) 你的 jQ 选择器是正确的。

于 2012-08-18T22:52:34.043 回答
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);
           });
        });
    });
});

你有一个缺失的结局})

于 2012-08-18T22:47:16.540 回答