如何在不使用php / laravel重新加载页面的情况下使用get和post语句

时间:2015-03-10 22:13:37

标签: javascript php jquery ajax laravel

我已经做了大量的研究并且继续围成一圈。我创建了一个拍卖应用程序,需要“实时出价”过程:

所以我需要能够执行GET语句来查找当前的最高出价(这需要一些验证) 然后我需要执行POST语句(再次执行验证)

难点:

我找不到定期更新当前出价的解决方案。即每隔3-5秒检查一次投标是否正确或只是更新它

有很多相互矛盾的信息,作为PHP和Laravel的新手,我真的被卡住了。我确实很欣赏其他类似问题,但没有充分解释所需要的内容或进入所需的详细程度。所以我开始认为jQuery / AJAX不是完成这项任务的正确行动。

Main.js(加载在所有php文件的标题中)

var delay = 5000;

var getCurrentHighestBid = function() {
// perform validation here, if necessary
var url = '/items';   // insert your URL here

$.get(url, null, handleGetCurrentHighestBidResponse);
};

var handleGetCurrentHighestBidResponse = function(response) {
    // check for nulls in response here, handle exceptions, etc
    // then insert your bid data into the DOM, which may look
    // something like:
    $('.winner').html(response.Html);

    setTimeout(getCurrentHighestBid , delay);
};

itemController.php(摘录)

public function show($id)
    {
            $item = Item::find($id);
            //find higest bid fo item_auction id 
            $winningBid = Item::find($id)->bids()->max('bid_amount');
            //var_dump($item);
        return View::make('items.show', compact('item', 'winningBid'));




    }

show.blade.php(view)(snippet)

<h4 id="winner">{{$winningBid }}</h4>

1 个答案:

答案 0 :(得分:1)

这是javascript / jQuery的理想候选者。

编辑:我已经将代码更新为更简单,更健壮。 GET函数从响应中调用(在延迟时),它也处理来自服务器的延迟。

基本上是这样的:

  1. 致电服务器
  2. 等待回复
  3. 处理回复
  4. 等待(按延迟时间设定)
  5. 重复步骤1
  6. GET可能看起来像这样(需要jQuery):

    var delay = 5000;
    
    var getCurrentHighestBid = function() {
        // perform validation here, if necessary
        var url = '';   // insert your URL here
    
        $.get(url, null, handleGetCurrentHighestBidResponse);
    };
    
    var handleGetCurrentHighestBidResponse = function(response) {
        // check for nulls in response here, handle exceptions, etc
        // then insert your bid data into the DOM, which may look
        // something like:
        $('.bid-details').html(response.Html);
    
        setTimeout(getCurrentHighestBid, delay);
    };