我用JSON获得的警报结果

时间:2013-08-06 11:54:36

标签: php ajax json api

好的,我有以下内容。当用户将某些内容放入文本字​​段然后失去焦点时,会发出ajax请求。

$(document).ready(function() {
//On Focus lose get content of the first input field
$('#fromCountry').blur(function()
{
    var input = $('#fromCountry').val();
    if(input == "")
        return false;
    else
    {
        $.ajax({
                type: 'GET',
                url: 'webservice.php',
                data: {country: input, action: 'firstTime'},
                success: function(response, textStatus, XMLHttpRequest) {
                    alert("TEST");
                }
            }
        );
    }
});
});

然后,它将请求发送到输入此字段的国家/地区的Web服务,并且Web服务使用数据库类中的方法获取该国家/地区(该国家的国会大厦)的经度和格度并将其返回作为JSON

这是webservice.php

<?php
header("Content-type: application/json");
require('Database.php');
$db = new Database();

$action = $_GET['action'];
if($action == 'firstTime')
{
    $country = $_GET['country'];
    $result = $db->getLocation($country);
    echo json_encode($result);
}
?>

这是数据库类

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
class Database {
private $user = "root";
private $pw = "";
public $pdo = null;

public function __construct($new = FALSE){
    try{
        $this->pdo = new PDO('mysql:host=127.0.0.1;dbname=timezone',$this->user, $this->pw);
        $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    }
    catch(PDOException $e){

    }
}
public function __call($name, array $arguments) {

    if(method_exists($this->pdo, $name)){
        try{
            return call_user_func_array(array(&$this->pdo, $name), $arguments);
        }
        catch(Exception $e){
            throw new Exception('Database Error: "'.$name.'" does not exists');
        }
    }
}

function getLocation($country)
{
    $SQL = "SELECT cLat, cLon FROM countries WHERE cName = :cName";
    $prepare = $this->prepare($SQL);
    $prepare->bindParam(':cName', $country);
    $prepare->execute();
    $result = $prepare->fetch();
    var_dump($result);
    return $result;
}

}

当我现在输入瑞典作为示例时,我将其作为XHR响应

array(2) {
  ["cLat"]=>
  string(10) "59.3333333"
  ["cLon"]=>
  string(5) "18.05"
}

这基本上是对的,但是我的ajax函数没有提醒“TEST”,因为它在成功函数中。我忘记了一步吗?

-----编辑:

我现在添加了

,
                error: function(){
                    alert("ERROR");
                }

它总是进入错误功能,但为什么呢?我的意思是,它根据萤火虫得到了回应,那么错误在哪里?

1 个答案:

答案 0 :(得分:0)

更改为

function(response, textStatus, xhr) {

XMLHttpRequest是一个类名,你不能命名这样的变量