【问题标题】:Laravel upon selecting from dropdown run ajax to scrape and display results?Laravel 从下拉菜单中选择运行 ajax 以抓取并显示结果?
【发布时间】:2023-10-14 12:19:02
【问题描述】:

我有一个下拉菜单,其中包含以下值:

<select style="padding-top:300px;">
            <form id="tram_stops">
                            <option onchange="tram_stops(this.value);" value="abraham-moss-tram">Abraham Moss tram stop</option>
                            <option onchange="tram_stops(this.value);" value="altrincham-tram">Altrincham tram stop</option>
                            <option onchange="tram_stops(this.value);" value="anchorage-tram">Anchorage tram stop</option>

并在更改调用 ajax 时:

function tram_stops(tram_value) {
    $.ajax({
        url: '/tramsearch' + tram_value,
        type: 'post',
        dataType: 'html',
        success: function(data) {

        },
        error: function(data) {

        },
        headers: {
        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
        }                 
    });
}

和控制器:

public function tram_search($tram_value) {
        $tram_text = $tram_value;
            if ($tram_text) {
                $client = new Client();
                $crawler = $client->request('GET', 'https://beta.tfgm.com/public-transport/tram/stops/'.$tram_text);
        echo "<div class=table-responsive><table class='table table-striped table-bordered table-hover'>";
        $tfgm = $crawler->filter('table[id="departures-data"]')->each(function ($node) {
            echo $node->html()."\n";
        });
        }
    }

那么我想要达到的目标:

允许用户选择电车站。 Value 是一个 slug,在 Controller 的 request('GET') 中使用。然后我想显示来自该请求的数据并将其输出到页面上。

到目前为止,当我从下拉列表中选择一个选项时,什么都没有发生。

【问题讨论】:

  • 你的选择和表单标签混淆了......我不建议在选择元素内打开表单:)
  • 不会改变函数不运行的事实
  • 好吧,祝你好运

标签: ajax laravel laravel-5 guzzle


【解决方案1】:

尝试这样做:

<form id="tram_stops">
    <select style="padding-top:300px;" onchange="tram_stops(this.value);" >
        <option value="abraham-moss-tram">Abraham Moss tram stop</option>
        <option value="altrincham-tram">Altrincham tram stop</option>
        <option value="anchorage-tram">Anchorage tram stop</option>
    </select>
</form>

【讨论】:

  • 所以我确实得到了一个 html 响应,我如何告诉它在页面上显示?
  • success: function(data) {$("#displayHTML").html(data);},ajax成功回调函数。 #displayHTML id 你要放置html的地方。
  • 对不起,还有 1 个快速的问题,即使没有运行 onchange,是否也可以重复(刷新)结果?所以假设有人选择安克雷奇电车站并将其留在页面上,有没有办法调用ajax?假设 30 秒后
  • 使用setTimeout()可以定期发送请求
  • 它应该去哪里?以前没用过
最近更新 更多