2

AJAX リクエストをページに送信して一部のデータを解釈しようとしています。探しているものに準拠している場合は、別の AJAX リクエストを送り返します。現在、最初のリクエストが行われていることがわかりますが、返されていません

//message.php
<head>
<script>
function org_name(str){
    alert(str); //this alert appears, so I know the data is being received by this function
    $.get("common_functions.php", { group_name: str} );
}
</script>
</head>    

次に、common_functions.php で同様のリクエストが返ってきましたが、何が問題なのか正確にはわかりません。アラート ボックスも表示されないので、リクエストが送信されたとコンソールに表示される理由がわかりません。

//common_functions.php

if(isset($_GET['group_name'])){
  ?>
  <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
  <script type="text/javascript">
  alert('common_functions'); //this does not appear
  $.get("message.php", { name: "test"} );
  </script>
  <?
}

Chrome で JavaScript コンソールを開くと、リクエストがフォーム メッセージを common_functions に送信したことがわかりますが、common_functions のリクエストが送信されていないようです

//text from javascript console
Request URL:http://localhost/message/common_functions.php?group_name=test
Request Method:GET
Status Code:200 OK

私が間違っている、または行方不明になっていることが明らかな何かを見た人はいますか? それが違いを生む場合、common_functions は message.php に含まれています。これは、php でそのページの他の関数を使用しているためです。

4

4 に答える 4

3

データを使って何かをしなければなりません。現在、AJAX 呼び出しを行っており、データに対して何もしていません。

したがって、次のようなものが機能します。

$.ajax({
    url: "common_functions.php",
    data: { group_name: str },
    type: "GET",
    success: function (data) {
        $(data).appendTo("head");
    }
});
于 2012-11-24T20:44:56.153 に答える
1

実行状態を制御する場合は、$。ajaxを使用します。

        $.ajax({
            type: "POST",
            url: "common_functions.php",
            data: { name: "test"},
            success: function(r)
            {
                 // user r as output
            },
            error: function(xhr, ajaxOptions, thrownError)
            {
                 // error report
                alert(xhr.responseText);
            }
    });

この場合、実行が成功したかどうか、またはエラーが発生したかどうかを確認できます。

また、firefoxまたはchrome用のfirebugアドオンを使用して、応答が送信されたかどうかを検出できます。Fidlerと呼ばれる優れたツールもあります。これにより、要求/応答の状態の概要をより正確に把握できます。

これは、 ajaxデバッグの優れたチュートリアルです。

于 2012-11-24T20:48:39.260 に答える
0

あなたの場合はhttp://phery-php-ajax.netを使用して、自動的にそれを行うライブラリを使用できます 。

function messages($data){
  $r = new PheryResponse;
  // return your messages
  return $r->json($messages);
}

function common($data){
  $r = new PheryResponse;
  switch ($data['group_name']){
    case 'messages':
       $r
       ->include_script(array( 
         'jquery' => 'http://code.jquery.com/jquery-1.8.2.js'
       ))
       ->phery_remote('messages'); // load your messages
       break;
  }
  return $r;
}

Phery::instance()->set(array(
  'common' => 'common',
  'messages' => 'messages'
))->process();

ページの読み込み時に

$(function(){
  phery.remote('common', {'group_name': 'messages'});
});

他に何もする必要はありません。ところで、使用後にjQueryを含めている場合$.get()、明らかに機能しません

于 2012-11-25T08:31:57.513 に答える
0

$.get<script>タグを削除します。使用しない別のjQuery AJAXメソッドload()を使用するか、$.getScript. コンテンツとスクリプトが必要な場合は、コンテンツの ajax リクエストを作成し、その ajax の成功コールバックでスクリプトを呼び出して、両方を行うことができます。$.getScript

load()指定されたセレクターのすべてのコンテンツを置き換えます

$('#myDiv').load('common_functions.php', { name: "test"})  

PHP出力のすべてのコンテンツを取得し、すべてのコンテンツを置き換えます#myDivが、スクリプトも実行します

于 2012-11-24T20:44:33.470 に答える