为ajax构建php响应

时间:2011-09-08 09:03:46

标签: php html ajax joomla

我的脚本存在逻辑问题。关键是要在表中格式化一些行,但不应重复标题,并且应输出所有项目,而不是传递给ajax的变量。但我不知道如何解决这个问题。

 function abc()
   {
      global $mainframe;

      $db      =& JFactory::getDBO();

      // Check for request forgeries
        if(isset($this->message)){
                $this->display('message');
   }
                // custom: generate token for ajax request
                        $ajax_token = JHTML::_( 'ajax.token' );
                            // custom end

//        JRequest::checkToken( 'get' ) or jexit( 'Invalid Token' );



        $letter_raw = JRequest::getVar('val');
        $letter = substr($letter_raw, -1);
        $response = '<div class="no-rec">not found</div>';
        $html = '';
        if (!empty($letter)) {
        $query = " SELECT * FROM #__glossary WHERE substr(tterm,1,1) LIKE '$letter%'";

        $db->setQuery( $query );

        $rows = $db->loadObjectList();


        if (count($rows)) {

        $header='<table class="stripeMe"><tbody><thead><tr><th>Begriff</th><th>Definition</th></tr></thead><tr>';

        foreach($rows as $key => $row) {

        $body='<td><span class="title">'.$rows[$key]->tterm.'</span></td><td>'.$rows[$key]->tdefinition.'</td></tr></tbody></table>';

        }

        $response = $header.$body;


        }

        $html = $response;

        echo $html;




        }



   }

2 个答案:

答案 0 :(得分:1)

究竟是什么问题? :)

你可能不应该把它变成一个函数,因为我猜你只是想用AJAX加载内容?

你应该添加到字符串中,不要在每一行中覆盖它。

更新,修复HTML错误

    if (count($rows)) {
    // CREATE TABLE AND HEAD
    $body = '<table class="stripeMe"><thead><tr><th>Begriff</th><th>Definition</th></tr></thead>';

    // TBODY FOR REPEAT INSIDE
    $body .= '<tbody>'
    foreach($rows as $key => $row) {
    $body .= '<tr><td><span class="title">'.$rows[$key]->tterm.'</span></td><td>'.$rows[$key]->tdefinition.'</td></tr>';
    }
    $body .= '</tbody></table>';

    $response = $body;
    }

    $html = $response;

    echo $html;

答案 1 :(得分:0)

好吧,如果您将数据作为HTML传回,那么这将起作用,因此您的jquery将是:

$('#holderdiv').load('abc.php');

如果您使用的是.post .ajax .get之类的东西,那么您将需要决定将数据传回的格式,所以如果它是JSON,那么您需要将其格式化,并确保您的jQuery是被告知期待这样的回应。如果您能够具体了解您的情况以及您遇到的问题,我可以给予更多帮助。