我尝试将简单的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.success
为1
,这意味着帖子成功。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/*"
]
}
答案 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");
以上可能不是答案,但我希望它能帮助您预防一些可能的错误。