2012-04-01 103 views
0

我想发送一个简单的POST到一个Web服务,但服务器似乎并没有得到POST数据。这是AJAX:为什么服务器没有收到我的POST数据?

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 }"); 
    } 
?> 

我试图格式化数据的不同方法(为 'uid'= 6,{UID:6},{ 'UID':6} ,...)但没有工作。

ajax从谷歌浏览器扩展弹出窗口运行,但我已将目标地址添加到权限列表中。

的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

你试过什么样的调试? – dldnh 2012-04-01 08:47:04

+0

@dldnh我其实不知道还有什么可以尝试的。我知道ajax调用会通过,但从未接收到发布数据。如果我使用GET而不是POST,它工作正常...... – Shawn 2012-04-01 19:59:01

回答

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"); 

上面可能不是答案,但我希望它会帮助你防止某些可能的错误。

+0

谢谢,这是好东西。但它并没有解决我的问题。 – Shawn 2012-04-01 19:57:22

相关问题