从JavaScript在PHP中的IP查找返回未定义


IP Lookup in PHP from JavaScript returning undefined

我正试图通过调用自己的服务器从script.js进行iplookup,但返回的都是"undefined"。为什么?

iplookup.php

<?php
    header('content-type: application/json; charset=utf-8');
    $data = json_encode($_SERVER['REMOTE_ADDR']);
    //next line needs to be commented out
    //echo $_GET['callback'] . '(' . $data . ');';
?>

script.js

//get ipaddress
$.ajax({
    url: "http://www.example.com/iplookup.php",
    data: null,
    type: 'GET',
    crossDomain: true,
    dataType: 'jsonp'
}).done(function (json) {
    self.ip = json;
});
//on the next line it returns `undefined`  
console.log('ipaddress: ' + self.ip);

您还需要回显响应。现在,您正在做的是设置头,将$_SERVER['REMOTE_ADDR']编码为$data变量,但您无法将其回声输出。因此,您的javascript ajax请求只得到一个空响应。

这样做:

<?php
header("Content-type: application/json");
print json_encode($_SERVER['REMOTE_ADDR']);
?>