【问题标题】:Best way to fetch a PHP array and output the result with jQuery?获取 PHP 数组并使用 jQuery 输出结果的最佳方法?
【发布时间】:2014-01-17 10:48:42
【问题描述】:

我正在尝试从 MyBB 论坛的导出消息中获取一些文本。该文件是 CSV 文件。

if (($handle = fopen("test.csv", "r")) === FALSE) { 
    exit("Couldn't load CSV");
}

fgetcsv($handle);

$messages = array(); 
$i = 0;

while($data = fgetcsv($handle)){
    if(count($data) == 7){
        $messages[$i]['date'] = $data[0] + "," + $data[1]; 
        $messages[$i]['folder'] = $data[2];
        $messages[$i]['subject'] = $data[3]; 
        $messages[$i]['receiver'] = $data[4];   
        $messages[$i]['sender'] = $data[5]; 
        $messages[$i]['message'] = str_replace("\'", "'", $data[6]); 
    }else{
        $messages[$i]['date'] = $data[0]; 
        $messages[$i]['folder'] = $data[1];
        $messages[$i]['subject'] = $data[2]; 
        $messages[$i]['receiver'] = $data[3]; 
        $messages[$i]['sender'] = $data[4];     
        $messages[$i]['message'] = str_replace("\'", "'", $data[5]);  
    }
    $i++;
}

我给每个 tr 和 th 标签(th 包括发送者的名字,tr 包括消息)一个带有数字的类。第一条消息是 0,第二条是 1,第三条是 2,依此类推。我像这样在 PHP 中加载消息:

$messages[0]['message'])

其中 0 是第一条消息。我希望它就像我单击第一条消息时一样,它会加载第一条消息。当我单击第二个时,它会加载第二个消息。你明白了。

我的 jQuery 如下:

$("td, th").on("click", function() {
    var message = $(this).attr("class");
    $("#message").text("<?= preg_replace("/\r|\n/", "", $messages[0]['message']) ?>");
});

我使用 preg_replace 将所有内容放在一行中。

Foreach 循环

<table>
foreach($messages as $i => $message) {
echo <<<EOL
        <tr>
            <th class="$i"> {$message['sender']} </th>
        </tr>
        <tr>
            <td class="$i"> {$message['message']} </td>
        </tr> 
EOL;
}
</table>

总结一下:我想在单击表格中的消息时显示该消息,但我不确定最好的方法是什么。

【问题讨论】:

  • 您应该使用 AJAX 加载您的消息。看看吧:api.jquery.com/jquery.ajax
  • 我知道如何发出 AJAX 请求,但正确设置它是我遇到的问题。

标签: javascript php jquery foreach


【解决方案1】:
$("td, th").on("click", function() {
    var messageId = $(this).attr("class");
    $.ajax({
       url: "test.php",
       type: "post",
       data: messageId,
       success: function(returnedVal){
           $("#result").html(returnedVal);
       },
       error:function(){
           $("#result").html('There is an error');
       }
   });      
});

returnedVal 是 test.php 返回的值。 例如,您可以返回您的消息。 然后你将它显示在 $("#result") 或任何你想要的地方:)

【讨论】:

  • 所以我应该制作一个额外的 PHP 文件,其中包含我所有的 PHP 内容?在本例中称为 test.php。
  • 如果你按照这个例子,是的,你应该创建test.php,你将在其中通过POST获取messageId。
  • 那么要获取 $_GET 的东西,我应该放什么而不是 0 呢? $messages[0]['message']
  • 在您的 test.php 中,您将返回 $message[$messageId]['message']。而要获取messageId,只需$messageId = $_POST['messageId'];
  • 我该如何处理 $message[$messageId]['message'] ?我应该把它放在哪里?我把 $_POST 的东西放在循环之后的 PHP 文件中,但我不确定把第一个东西放在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2019-01-13
  • 2014-07-21
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
相关资源
最近更新 更多