【问题标题】:Laravel - Java script - Unable to load a page from web route url in ajax callLaravel - Java 脚本 - 无法在 ajax 调用中从 Web 路由 url 加载页面
【发布时间】:2020-03-04 19:08:30
【问题描述】:

我在 $ajax 调用中传递了一个参数来链接控制器函数。

abc.blade.php

onClick 监听器内部---

$.ajax({
    url: "{{route('getFordHedGpsLocationForSelectedRep')}}",
    type: "GET",
    dataType:"json",
    data: {repc:repCode.trim()}, 
    success: function (data) 
    {
      alert("OK");
    }
});

web.php

Route::get('getFordHedGpsLocationForSelectedRep', 'MapController@getFordHedGpsLocationForSelectedRep')->name('getFordHedGpsLocationForSelectedRep');

MapController.php

public function getFordHedGpsLocationForSelectedRep(Request $request) 
    {
        $repCode  = $request->get("repc");

        $result = DB::select('select query to get data');

        $temp = array();
        $output = array();
        $output1 = array();

        foreach ($result as $key => $value) 
        {
            if (trim($value->RepCode) == $repCode) 
            {
                $temp['lat'] = $value->Latitude;
                $temp['lng'] = $value->Longitude;
                $temp['ref'] = $value->RefNo;
                $temp['sTime'] = $value->startTimeSO;
                $temp['eTime'] = $value->endTimeSO;
                $temp['repCode'] = $value->RepCode;
                $temp['debCode'] = $value->DebCode;
                $temp['tAmt'] = $value->TotalAmt;
                $temp['outDis'] = $value->OutDisVal;
                $temp['debName'] = $value->DebName;
                $temp['repName'] = $value->RepName;
                $temp['qty'] = $value->Qty;
                $temp['tDate'] = $value->TxnDate; 
            }                                     

            $output = isset($temp)?$temp:'';
        }

        $output1 = isset($output)?$output:'';       

        return view('selectedRepMap')->with(['repOrders'=> $output1]);

    }

该控制器函数返回一个带有视图加载数据的视图 (selectedRepMap.balde.php)。不幸的是,在 abc.blade 上的单击事件后页面没有自动加载,但检查网络状态为“getFordHedGpsLocationForSelectedRep”功能($ajax 调用 url)获得了“200”,并在检查网络区域页面加载成功时双击该功能。

【问题讨论】:

  • 这是因为您使用的是 ajax。它需要 json 输出。
  • 当 ajax 请求成功时,你只是 alert("OK"); 但什么都不处理,先生
  • @Areg - 知道了。那么我必须使用没有json响应的ajax调用?
  • @Vo Kim Nguyen - 你说得对,先生...
  • 如果repOrders 可以通过URL 你可以简单地这样做

标签: javascript php ajax laravel-5


【解决方案1】:

更新代码

public function getFordHedGpsLocationForSelectedRep(Request $request) 
{
        $repCode  = $request->get("repc");

        $result = DB::select('select query for data');

        $output1 = isset($result)?$result:'';

        return $output1;
}

abc.blade.php

$.ajax({
    url: "{{route('getFordHedGpsLocationForSelectedRep')}}",
    type: "GET",
    dataType:"json",
    data: {repc:repCode.trim()}, 
    success: function (data) 
    {
        var repOrders = {data};
        var a = JSON.stringify(data);

        console.log(a);
        window.location = '/selectedRepMap?repOrders='+ a;  
    }
  });

newPage.blade.php

var url_string = window.location.href;
var url = new URL(url_string);
var repOrders = url.searchParams.get("repOrders");
var orders = JSON.parse(repOrders);

console.log(orders['value']);

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 2013-05-12
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多