3

ajax に対する私の忍耐力はなくなりました。これを機能させることはできません。正直なところ、DIV の範囲内で AJAX を使用してフォームを読み込んでページに投稿することを意図しているため、DIV の外でこれを試したことはありません。

これからの進歩に感謝します。

#contentmainpane は DIV です。私は持っている ...

if (isset($_POST['l'])) {
echo $_POST['l']; }
else { 
echo 'nope'; }

... CARTページでは正常にロードされますが、BOOKページからの投稿を受信しません(したがって、#contentmainpane DIV内のCART.PHPでエコーされません)。問題のある BOOK ページのコードは次のとおりです。

<form id="form1" method="POST">
<input id="l" name="l" size="45" type="text" value="book">
<input id="submit" name="submit" value="save" type="submit">
</form>


<script>
$('#form1').submit(function(event){

event.preventDefault();

var book = $('#book').serialize();
var cart = '/content/pages/cart.php';
var formdata = {"book": book}


$.ajax({

type: "POST",

url : "/content/pages/cart.php"

data: formdata,

success: function(msg){

$("#contentmainpane").load(cart);

}
});
});
</script>
4

4 に答える 4

2

#Book の ID でフォームをシリアライズしていることに気付きましたが、HTML には #book の ID が表示されません... また、URL の後にコンマが必要です

これを試して

$('#form1').submit(function(event) {
    event.preventDefault();
    var book = $('#form').serialize();
    var cart = '/content/pages/cart.php';

    $.ajax({
        type: "POST",
        url: "/content/pages/cart.php",
        data: book,
        success: function() {
            $("#contentmainpane").load(cart);
        }
    });
});
于 2012-11-25T01:27:06.357 に答える
2

valuedataの既存のキーを持つオブジェクトである必要がありますl

'l'の値を要求しているため$_POST、キー 'l' を持つデータ オブジェクトを渡す必要があります。コードからformdata、AJAX 呼び出しで渡す変数は現在{ 'book' : book}.

代わりに、次のいずれかでなければなりません{ 'l' : book }

または、PHP コードで

if(isset($_POST['book'])){...

于 2012-11-25T01:34:46.857 に答える
1

Phery ライブラリを使用して、PHP を AJAX 経由で簡単に jQuery と結び付けることができます。http://phery-php-ajax.net

あなたはあなたが何であるかについて言及していませんでした#book、私はそれがフォームだと思いますよね? その場合、フォームで を使用data-relatedすると、2 つのフォームを 1 回の AJAX 呼び出しで結合できるようになります。

あなたの場合、次のようになります。

<form id="form1" data-remote="function" method="POST" data-related="#book">
  <input id="l" name="l" size="45" type="text" value="book">
  <input id="submit" name="submit" value="save" type="submit">
</form>

PHP では次のようになります。

function func($data){
  $r = new PheryResponse;
  // $data['l'] got what you want, also $data['submit'] is available here
  // do whatever you need to do, then update your #contentmainpane
  $r->jquery('#contentmainpane')->html('your cart.php contents');
  return $r;
}

Phery::instance()->set(array(
  'function' => 'func'
))->process();

あなたのロジックはサーバー側になり、クライアント側ではなくなります。このようにすると、サーバーからのコードは無料で、必要に応じて変更できるため、柔軟性が大幅に向上しますが、クライアント側のコードでは同じことが起こりません。

于 2012-11-25T05:39:46.590 に答える
0

問題は解決しました

皆さんの提案と努力に感謝します。コーディングフォーラムのユーザーがこの ajax 投稿の問題を解決しました。

ここにスレッドがありますhttp://www.codingforums.com/showthread.php?p=1294868#post1294868

すべてのコーダーによろしく

于 2012-11-26T15:25:25.193 に答える