无法获得GET的AJAX答案

时间:2014-08-03 16:29:02

标签: php jquery ajax json

我正在努力实现以下目标: 当您单击H1时,JQuery从服务器获取某些密钥的信息并将其发送回用户,其中jquery显示提示此信息。 PHP中的server.php

$link = mysql_connect("mysql.hostinger.com.ua", "_my_login_", "_my_password_") or die("NOOO!");
mysql_select_db("u994953720_db");

$key;
if(isset($_GET['Key'])) {
  $key = $_GET['Key'];

  $selected = mysql_query("SELECT * FROM `Table` WHERE `Key`='".$key."'", $link);
  $selected_row = mysql_fetch_array($selected);

  if($selected_row!=null){
    $response = array(
      "result" => $selected_row['Value']
    );
    echo json_encode($response);
    exit;
  }else{
    $response = array(
      "result" => "Nope."
    );
    echo json_encode($response);
    exit;
  }
}

主页中的jQuery:

$('h1').on('click', function () {
    $.ajax({
      type: 'GET',
      url: '/server/server.php',
      data: {
        'Key': 'Roman'
      },
      success: function(data) {
          alert(data.result);
      },
      dataType: 'json'
    });
});

但我没有任何影响。你们能告诉我如何解决我的错误吗? P.S。Working not working example P.S.I我刚开始学习PHP,所以可能会有一些非常愚蠢的错误。 更新:我已经完成了你们所说的一切(我还不关心安全性),但它仍然不起作用。在控制台中有以下消息:

XHR finished loading: GET "http://site0.hol.es/server/server.php?Key=Roman". 

当我将错误方法包含在ajax中时:

error: function(requestObject, error, errorThrown) {
        alert("request objqect: " + requestObject + " . Error: " + error + " . Error thrown: " + errorThrown);
}

,有一个警告:解析错误,意外令牌<

更新1:我明白了,我的页面被写入json结果,如here,但我没有任何其他的回声,它怎么会发生?

更新:我已经发现,PHP正在向整个页面发送它所放置的内容,所以,我只是将其删除了)但是,谢谢你对安全的评论,我会纠正它

1 个答案:

答案 0 :(得分:1)

通过查看您的网站,我可以看到您正在返回HTML + JSON。尝试在回声后抛出一个出口:

echo json_encode($response);
exit;

此外 - 您根本没有处理无数据状态。你应该做的事情如下:

if(isset($_GET['Key'])) {
  // your valid request code
} else {
    echo json_encode(array('result' => false, 'reason' => "You must send a Key"));
}

此外,您可以通过直接命中端点和var_dumping /调试在那里运行的代码来调试PHP代码。首先,当您转到http://site0.hol.es/server/server.php?Key=Roman

时,$selected_row = mysql_fetch_array($selected);的输出是多少

最后 - 正如其他人所提到的那样,只是一点警告。您对SQL注入攻击持开放态度。考虑使用PDO -

PDO是什么: http://php.net/manual/en/book.pdo.php

为什么要使用它: http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

如何使用它:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers