2012-04-01 109 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

相關問題