0

私は長い間このバグに悩まされてきました、そして私はそれを解決するためにphpの知識がほとんどありません。だから私はあなたの助けを祈ります。

私の問題は、自分のサイトに投稿(またはajax)リクエストを行った後、GETリクエストが消えて、NULLオブジェクトが残ることです(そのIDからオブジェクトを作成するため)。

私はいくつかのテストを行いましたが、問題は、POSTから取得した応答のGETがNULLであることにあります。そして、getを忘れて、idを乱数として開始しただけでは、これは起こりません。

これが私のコードのいくつかの部分で、問題は次のとおりだと思います。

最初は私のGETでのphpです:

require 'php/functions.php';

    if (isset($_GET['id'])) {

    $id = $_GET['id'];  

    // $id = 5;

    try {
    $bar = getBarById($id);
    } catch (exception $e) {
        exit;
    }

この後、オブジェクトから日付を出力し、それがすべて正常に機能した後、ここでGETが開始されます。

今。ajax(通常のPOSTも試しました)リクエストを行うと、POSTからのステータス応答はOKですが、その後は何も起こらず、det応答はGETリクエストがNULLであることを示します。

JS:

<script language="javascript" type="text/javascript">
function save(value) {
$.ajax({
type: "POST",
url: "barpage.php",
data: { save_sum: value }
}).done(function(msg) {
    msg.preventDefault();
 alert( msg );
});
}

記録のためだけに。何も起こらないことを私に告げるのは、ajaxからの「msg」応答です。その「$id」はNULLです。

私は何が間違っているのですか?

ありがとう。

4

3 に答える 3

2

取引は次のとおりです。

AJAXリクエストはPOSTリクエストを実行しているため、GET配列は埋められていません。これは、GETリクエストの代わりにPOSTリクエストを実行しているためです。簡単な修正は、ajaxリクエストの一部としてIdを送信し、phpファイルで次のように要求することです。

$id = isset($_GET['id']) ? $_GET['id'] : null;
if($id == null) { 
   $id = isset($_POST['id']) ? $_POST['id'] : null;
}

代替ソリューション

$id = null;
if($_SERVER['REQUEST_METHOD'] == "GET") {
   $id = isset($_GET['id']) ? $_GET['id'] : null;
}
if($_SERVER['REQUEST_METHOD'] == "POST") {
   $id = isset($_POST['id']) ? $_POST['id'] : null;
}

さらに良い解決策(以下のコメントから)

$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;

お役に立てば幸いです。

于 2012-12-07T19:33:47.367 に答える
0

リクエストをPOST送信するのではなく、データをPHPページに送信しますGET

function save(value) {
$.ajax({
type: "GET",
url: "barpage.php",
data: { save_sum: value }
}).done(function(msg) {
    msg.preventDefault();
    alert( msg );
});
}

または、実行することもできますが、オブジェクトに変数をPOST配置します。GETurl

function save(value) {
$.ajax({
type: "POST",
url: "barpage.php?id=5",
data: { save_sum: value }
}).done(function(msg) {
    msg.preventDefault();
    alert( msg );
});
}
于 2012-12-07T19:33:31.797 に答える
0

あなたは間違ったいくつかのことをしています:

  • POST ajaxリクエストを作成しますが、同時にGETパラメーターを検索します
  • データをPOSTしますsave_sumが、探しますid

とにかくここに可能な解決策がありますが、私たちはあなたが正確に何をしているのか推測することはできません:

これを試して:

$.ajax({
    type: "POST",
    url: "barpage.php?id=<?php echo $_GET['id']; ?>",
    data: { save_sum: value }
    }).done(function(msg) {
        msg.preventDefault();
     alert( msg );
    });
  }

またはタイプを「GET」に変更します。

$.ajax({
    type: "GET",
    url: "barpage.php?",
    data: { save_sum: value, id: <?php echo $_GET['id']; ?> }
    }).done(function(msg) {
        msg.preventDefault();
     alert( msg );
  });
}
于 2012-12-07T19:35:44.707 に答える