laravel中的ajax重新加载空白页面

时间:2016-04-30 23:41:50

标签: javascript php jquery ajax laravel

我正在尝试使用ajax在按钮单击时从数据库中获取数据。现在当我点击按钮时,会重新加载空白页面。我不确定为什么会发生这种情况或我如何解决它。

以下是我视图中的代码:

<form action="test" method="post" id="testForm">
  <input name="input1" type="form"> </input> <br>
  <input name="input2" type="form"> </input> <br>
  <button type="submit" class="sbutton"> Submit </button>
</form>

Javascript代码也在脚本标签之间查看,(我知道不好的做法,以后会移到单独的文件中)。

$('#testForm').submit(function(e){
  var rawElement = this;
  e.preventDefault();
  var formData = $(this).serialize(); 
  $.post('test', formData).done(function(response){
      console.log(response);
  });
});

以下是我的控制器中的代码:

public function getValues()
{
  $input1= $_POST["input1"];
  $input2= $_POST["input2"];
  try{
      DB::table("table")->insert(
          array("value1" => $input1, "value2" => $input2)
      );
  } catch (\Exception $e) {
      echo "something went wrong";
  }
  $object = new \App\testClass($userID); // $object is a custom object
   return $userObject;
} 

我的路线文件中的代码:

Route:: post("test",
["as" => "test",
"uses" => "tableController@getValues"]);

Route::get("test", "PagesController@getValues"); // This just returns the page

所以现在控制器功能正在返回一个带有对象的空白页面。我试图在laravel中使用ajax来获取控制器函数,只是将对象传递给当前页面而不重新加载页面。

3 个答案:

答案 0 :(得分:1)

解决方案是将表单放在body标签内,并将输入字段更改为具有类型文本。下面是带有更正代码的视图文件

<body>
<form action="test" method="post" id="testForm">
<input name="input1" type="text"> </input> <br>
<input name="input2" type="text"> </input> <br>
<button type="submit" class="sbutton"> Submit </button>
</form>


<script>

$('#testForm').submit(function(e){
     e.preventDefault();
  var formData = $(this).serialize(); //Get the form data and put in a structure i can send
  $.post('test', formData).done(function(response){
      console.log(response);
  });
 });
 </script>
</body>

答案 1 :(得分:0)

您需要使用Request图层来访问任何POST数据。

public function getValues(Request $request)
{
    $input = $request->input();

    $input1= $input["input1"];
    $input2= $input["input2"];.

    try {
        DB::table("table")->insert(
            array("value1" => $input1, "value2" => $input2)
        );

    } catch (\Exception $e) {
        dd("something went wrong");
    }

    $object = new \App\testClass($userID); // $object is a custom object
    return $object;
} 

答案 2 :(得分:0)

我们走了:

var data = $("#testForm").serialize();
            $.ajax({
                type: "POST",
                url: "/yourURL",
                data: data,
                dataType: 'html',
                success: function (result) {

                   alert("Your message sent!");
                }
            });

希望它有所帮助;)

相关问题