0

ポストリクエストを送信しようとしていますが、コールバックの応答が異なります。

function get_response() 
{
    var data = 
    {
        value1: "value1",
        value2: "value2"
    };          
    $.post("/index.php?id=1",data,function(text) 
        {
            $("#container1").empty();
            $("#container1").append(text);
            $("#container2").empty();
            $("#container2").append(text);
        });
        return;
}

現在表示しているページに2つの値を送信しています。各値は異なる関数に渡され、関数ごとに1つの結果を受け取ります。

if (isset($_POST['value1']))
{
    echo $this->function_1();
    exit;
}

if (isset($_POST['value2']))
{
    echo $this->function_2();
    exit;
}

私はすでにたくさん試し、さらにグーグルで検索しました...しかし、私は自分の状況に合ったものを見つけることができません。基本的に、function_1の戻り値を#container1に貼り付け、function_2の戻り値を#container2に貼り付けたいと思います。

私の脳は私の質問のATMの構造よりも混乱していると思います...しかし、それでもある程度理解できることを願っています(:

私は現在2つの異なるポスト関数を実行していますが、両方が間隔に設定されているため、同時に複数のポストを送信するのは面倒で、私の意見では非効率的です(間隔が短いため、スタックする可能性があります)。

4

2 に答える 2

0

応答を連結してから分割してみませんか?

$response="";
if (isset($_POST['value1']))
{
    $response.=$this->function_1();
}

if (isset($_POST['value2']))
{
    $response.='|'.$this->function_2();
}
echo $response;

そしてJqueryでは:

function get_response() 
{
    var data = 
    {
        value1: "value1",
        value2: "value2"
    };          
    $.post("/index.php?id=1",data,function(text) 
        {
            var response=text.split("|");
            if (response.length==2){
            $("#container1").empty();
            $("#container1").append(response[0]);
            $("#container2").empty();
            $("#container2").append(response[1]);
        }
        });
        data = null;
        text = null;
        return;
}

@subirkumarsaoが言うように、オプション2はJSONになります。

$response=Array();
if (isset($_POST['value1']))
{
    $response['value1']=$this->function_1();
}

if (isset($_POST['value2']))
{
    $response['value2']=$this->function_2();
}
echo json_encode($response);

およびJQuery:

function get_response() 
{
    var data = 
    {
        value1: "value1",
        value2: "value2"
    };          
    $.post("/index.php?id=1",data,function(text) 
        {
            var response=jQuery.parseJSON(text);
            if (response.length==2){
            $("#container1").empty();
            $("#container1").append(response.value1);
            $("#container2").empty();
            $("#container2").append(response.value2);
        }
        });
        data = null;
        text = null;
        return;
}

パフォーマンスが高くつくため、常にできるだけ少ない投稿を試す必要があります。

于 2012-07-10T09:02:17.580 に答える
0

JSON 応答の作成。何かのようなもの

{
 "func1":"output of func1",
 "func2":"output of func2"
}

ajax 応答で実行できます。

text.func1 // これを container1 に設定します

text.func2 // これを container2 に設定します

于 2012-07-10T09:05:00.010 に答える