我究竟能从jQuery AJAX请求中返回什么?

时间:2012-02-23 16:30:36

标签: php jquery mysql ajax

我有一个AJAX请求,它使用POST将信息发送到页面,并返回以下内容:

        echo '<tr>';
        echo '<td>';
            echo $product1;
        echo '</td>';

        echo '<td>';
            echo $code1;
        echo '</td>';

        echo '<td>';
            echo $value1;
        echo '</td>';

        echo '<td>';
            echo $time1;
        echo '</td>';


    echo '</tr>';
//  echo '</table>';

    echo 'Your code has been successfully redeemed!';

这是我在客户端的代码:

        }else{

        $('#poo tr:last').after(result);

    }

我的问题是......虽然这可以很好地附加到表客户端的末尾,但我还想传递另一个要在PHP中使用的变量,或者更具体地说,是数据库查询结果可以在PHP中使用。

似乎无法弄清楚如何输出不同的东西,因为它会搞砸我现在只是回应HTML的安排。

有什么想法吗?

谢谢! :)

5 个答案:

答案 0 :(得分:3)

您可以使用json结构:

echo json_encode( array( "html" => $myhtml, "otherdata" => $myotherdata ) );

然后在jquery中访问每个部分。

$.ajax({
  url: "myhandler.php",
  dataType: "json"
}).done(function(json){
  $('#foo tr:last').after(json.html);
  alert(json.otherdata);
});

但请注意,如果$myotherdata是一个关联数组(或我们在javascript中调用它的对象),则警报将只显示[object Object](这不是错误!使用点语法引用它的属性或数组语法json.otherdata.keyjson.otherdata["key"]

答案 1 :(得分:2)

您可以从AJAX请求中返回任何内容;你只需要告诉JQuery如何处理它。

如果您使用$.getJSON来调用AJAX请求,那么您可以使用json_encode对PHP结构进行编码,它将出现在具有类似结构的JS中。

答案 2 :(得分:2)

您可以获取JSON格式的所有数据并从中读取。例如,在PHP中,您可以构建一个由您想要的不同类型数据组成的多维数组。考虑下面的多维数组。

$array = array(
    'table' => array(
        $product1, 
        $code1, 
        $value1,
        $time1,
    ),
    'anothervar' => array(
        'someValue',
        'anotherVal',
        'someMoreval',
        'andValue',
    ),
    'somemorevar' => array(
        'data',
        'someMoreData',
        'anotherData'
    ),
);

使用PHP的json_encode函数将其转换为JSON。

$json = json_encode($array);
echo $json;

然后使用javascript从JSON读取数据。并做任何你喜欢的事。

希望这会有所帮助。

答案 3 :(得分:1)

作为免责声明,我不会定期编写PHP代码,但您只需将格式从表结构更改为JSON:

echo '{';
        echo 'Product1:';
            echo $product1;


        echo ',Code1:';
            echo $code1;


        echo ',Value1:';
            echo $value1;


        echo ',Time1:';
            echo $time1;



    echo '}';

然后更改您的客户端脚本以获取此JSON对象并在客户端构建表结构。然后,您也可以以这种方式传递其他变量。

答案 4 :(得分:1)

我在查找JSON信息时遇到了类似的问题。它就在那里,你必须看。在此期间,您可以使用javascript .split()函数创建一些荒谬的字符序列。例如。

<?php 

echo //EVERYTHING YOU WANT IN THE FIRST PART;
echo '|#@!|';
echo //EVERYTHING YOU WANT IN THE SECOND PART;

?>

并在jQuery方面

...function(result(){
  var resultArray = result.split('|#@!|');
  // YOU NOW HAVE BOTH PARTS. ONE IS IN resultArray[0], THE OTHER IN resultArray[1]
});

希望这会有所帮助。