在我的表单中,我想用两个字段做一些事情:
“website_domain”和“website_ip_address”
我正在尝试使用 jQuery/JSON 调用 PHP 脚本,将 website_domain 传递给它,并接收包含该网站 IP 地址的 JSON。
问题/症状描述:
部分工作:在模糊时,它获取 PHP 脚本的 url。我可以在 Firebug 中看到这么多。我得到 200 OK。根据 JSONLint,PHP 脚本的输出是有效的 JSON:
{"field":"website_ip_address","value":"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 应用程序 View 中编写的。
: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 天,但无济于事。我只是在这里遗漏了一些东西。
最佳答案
您当前正在尝试将 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 选择器是正确的。
关于javascript - jQuery 无法从 PHP 脚本读取 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022749/