在我的表单中,我想用两个字段做点什么:
“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
$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 );
?>
请注意,这是在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天,但没有用。我在这里错过了一些东西。
答案 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);
});
});
});
});
你有一个缺失的结尾})