0

単純な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。これは、投稿が成功したことを意味します。
  • を取得することもできます。これは、 falseが返さ0れることを意味します。mysql_query(...)
  • しかし、代わりに、を取得します。これは、 false-1を返すことを意味します。isset($_POST['UID'])

... / 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はGoogleChrome拡張機能のポップアップから実行されますが、アクセス許可リストにターゲットアドレスを追加しました。

マニフェスト.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/*"
  ]
}
4

1 に答える 1

1

json_encode($array)配列をJSONにエンコードするために使用できます。

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

ajaxphpファイルが何もキャッシュしていないことを確認することも重要です。

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

上記は答えではないかもしれませんが、いくつかの考えられるバグを防ぐのに役立つことを願っています。

于 2012-04-01T08:47:11.457 に答える