分开Jquery Post的响应

时间:2012-07-10 08:58:12

标签: jquery typo3

我正在尝试发送一个post-request,并且在回调的响应中有所不同。

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;
}

我正在向我目前所在的页面发送两个值。 每个值都被传递给另一个函数,每个函数都会收到一个结果。

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

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

我已经尝试了很多,并且用Google搜索了更多...但我找不到适合我情况的任何内容。 我基本上想将function_1的返回值粘贴到#container1中,将function_2的返回值粘贴到#container2中。

我认为我的大脑比我的问题结构更加混乱...但我希望它仍然有些可以理解(:

我目前运行了两个不同的后期功能,但由于两者都设置为一个间隔,让我同时发送多个帖子很烦我,在我看来效率低(间隔时间很短,因此它可能会叠加)向上)。

2 个答案:

答案 0 :(得分: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;
}

选项2将是JSON,因为@subirkumarsao说:

$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;
}

你应该尽量少尝试帖子,因为它的性能很昂贵。

答案 1 :(得分:0)

创建JSON响应。 像

这样的东西
{
 "func1":"output of func1",
 "func2":"output of func2"
}

在ajax响应中你可以做到。

text.func1 //将此设置为container1

text.func2 //将此设置为container2