代码之家  ›  专栏  ›  技术社区  ›  Geethu

返回ajax响应时出现问题

  •  0
  • Geethu  · 技术社区  · 6 年前

    我想返回一个url作为ajax响应。但在此之前,我使用递归函数来展平多维数组并保留密钥。

    function response(){
        ...
        $response = Ezpay::PayWithToken($obj);
        $trans_resp = json_decode(json_encode($response),true);
        $resp_array = $this->flatten($trans_resp);
        //saving transaction response from  gateway to sessioion
        Session::push('ezpay_gateway_resp',json_encode($resp_array));
        print_r(Session::get('ezpay_response'))
        return '/gateway/success';
    }
    

    递归函数是

    function flatten($array, $prefix = '') {
          $result = array();
          foreach($array as $key=>$value) {
                if(is_array($value)) {
                     $result = $result + $this->flatten($value, $key );
                }
                else {
                     $result[$key] = $value;
                }
          }
          return $result;
    }
    

    但是现在 $result 正在返回数组istead of '/gateway/success'

    2 回复  |  直到 6 年前
        1
  •  0
  •   madalinivascu    6 年前

    去除 print_r(Session::get('ezpay_response')) 根据您的代码,

    使用echo在页面上显示文本

     echo '/gateway/success';
    
        2
  •  0
  •   rxw    6 年前

    您应该回显url:

    function response(){
        $resp_array = $this->flatten($trans_resp);
        //saving transaction response from  gateway to sessioion
        Session::push('ezpay_gateway_resp',json_encode($resp_array));
        echo '/gateway/success';
    }
    

    这是一个完整的示例。

    控制器:

    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Http\Requests;
    use App\Http\Controllers\Controller;
    
    class ExampleController extends Controller
    {
       public function message()
       {
          $msg = "myurl/index";
          return response()->json(array('msg'=> $msg), 200);
       }
    }
    

    路线:

    Route::get('ajax',function()
    {
       return view('message');
    });
    Route::post('/msg','ExampleController@message');
    

    使用它的Javascript:

    function getMessage(){
        $.ajax({
           type:'POST',
           url:'/msg',
           data:'_token = <?php echo csrf_token() ?>',
           success:function(data){
              $("#msg").html(data.msg);
           }
        });
    }