为什么服务器不接收我的POST数据?

时间:2012-04-01 07:46:11

标签: php jquery google-chrome-extension postdata

我尝试将简单的POST发送到Web服务,但服务器似乎无法获取POST数据。这是ajax:

popup.js

$.ajax({
        url: 'http://www.flags.99k.org/removeFlag.php',
        type: 'POST',
        data: "UID=6",
        dataType: 'json'
    }).done(function(response)
    {
        $('<p />').text('response: ' + response.success).appendTo($('body'));
    });
  • 我希望response.success1,这意味着帖子成功。
  • 我还可以获得0,这意味着mysql_query(...)返回false。
  • 但相反,我得到-1,这意味着isset($_POST['UID'])返回false。

... / removeFlag.php

<?php
    include("DB.php"); // connects and selects database.
    if(isset($_POST['UID'])) {
        $sql_removeFlag = "DELETE FROM Flags WHERE UID = " . $_POST['UID'] . ";";
        $success = mysql_query($sql_removeFlag);
        $jsonStr = ("{ \"success\":\"" . $success . "\"}");
        echo $jsonStr;
    } else {
        echo("{ \"success\": -1 }");
    }
?>

我尝试了不同的格式化数据的方式(&#39; uid&#39; = 6,{uid:6},{&#39; uid&#39;:6},...)但没有效果。

ajax是从google chrome扩展弹出窗口运行的,但我已将目标地址添加到权限列表中。

的manifest.json

{
  "name": "Ajax POST",
  "version": "1.0",
  "description": "Ajax POST from popup on click.",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
      "flags.99k.org/*",
      "http://flags.99k.org/*",
      "http://www.flags.99k.org/*"
  ]
}

1 个答案:

答案 0 :(得分:1)

您可以使用json_encode($array)将数组编码为JSON。

$response['success'] = $success;
$jsonStr = json_encode($response);

确保您的ajax php文件不缓存任何内容也很重要。

header("Expires: Thu, 15 Dec 2011 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

以上可能不是答案,但我希望它能帮助您预防一些可能的错误。