【问题标题】:How to take value from textarea to textarea with Laravel + Jquery Ajax?如何使用 Laravel + Jquery Ajax 从 textarea 到 textarea 获取价值?
【发布时间】:2018-01-12 19:55:55
【问题描述】:

如何使用 laravel 和 jquery ajax 从一个文本区域获取价值。 到目前为止我有这个文件。 路线:

Route::post('/post', 'PostController@post');

控制器:

class PostController extends Controller
{
       public function post(Request $request)
    {

 $request->json()->all();

    }
}

JQuery 文件:

$(function(){


 $('#insert').on('click', function(e){
     e.preventDefault();
 var intrare = $('textarea#firsttextarea').val();
  $.ajax({
    type:'POST',
    url: '/post',
    data: {intrare: intrare},
    success: function(data){
       $('textarea#secondtextarea').val(data);
    }

 });
 });

});

和 html :

<textarea class="form-control" name="firsttextarea" rows="10" id="firsttextarea" ></textarea>

<button  id="insert" class="btn btn-md btn-primary"><span class="glyphicon glyphicon-circle-arrow-right"></span>Insert</button>

<textarea class="form-control" name="secondtextarea" rows="10" id="secondtextarea" ></textarea>

当我按下按钮时,什么也没有发生。

【问题讨论】:

  • 在开发者工具中是什么意思?您的控制器方法没有返回响应。
  • 没什么,这就是为什么我很困惑它应该说些什么
  • 我没有表单操作,也许我应该使用?我是 laravel 和 jquery 的新手。
  • 我应该在表格中使用这个吗?
  • 阿德里安,阅读我提交的答案。

标签: php jquery html ajax laravel


【解决方案1】:

第一个问题可能在 CSRF 验证中。如果是这样,您可以禁用它或添加{{ csrf_token() }}。 那么你的 post action 应该是这样的:

public function post(Request $request)
{
    return response()->json($request->all());
}

我检查了它,它工作正常。但在 textarea 中插入 [Object object] 因为它是 JSON。您可以像这样在 Jquery 脚本中添加 JSON.stringify:

$(function(){
    $('#insert').on('click', function(e){
        e.preventDefault();
        var intrare = $('textarea#firsttextarea').val();
        $.ajax({
            type:'POST',
            url: '/post',
            data: {intrare: intrare},
            success: function(data){
                $('textarea#secondtextarea').val(JSON.stringify(data));
            }

        });
    });

});

【讨论】:

  • 绝对不建议禁用它。
  • @Win 是的,但如果它用于一些研究,那么这种方式会更快。 ofc 用于生产,您应该使用 csrf 验证
【解决方案2】:

试试这个,你的控制器方法没有返回响应。

class PostController extends Controller
{
    public function post(Request $request)
    {      
        return response()->json([
            'data' => $request->get('intrare'),
        ]);
    }
}

然后,将其添加到您的刀片文件中的头部

<meta name="csrf-token" content="{{ csrf_token() }}">

并将您的 JS 替换为以下内容:

$(function() {

  // We need CSRF Token in our ajax request so we can
  // validate the POST request
  $.ajaxSetup({
    headers: {
      "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content")
    }
  });

  // Insert text from first textarea to the other textarea
  $("#insert").on("click", function(e) {
    e.preventDefault();
    var intrare = $("textarea#firsttextarea").val();
    $.ajax({
      type: "POST",
      url: "/post",
      data: { intrare: intrare },
      success: function(response) {
        $("textarea#secondtextarea").val(response.data);
      }
    });
  });

});

【讨论】:

  • 还是什么都没有 :(
  • 500 内部服务器错误,导致 js xhr
  • 我尝试使用 mozilla 这给开发人员
  • @AdrianKlark 试试上面的方法,你需要将 XSRF 令牌添加到你的 Ajax 请求中
  • @AdrianKlark 你在哪里添加了元头?请仔细检查您是否与上述完全一样。
猜你喜欢
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2013-03-22
  • 1970-01-01
  • 2011-12-15
相关资源
最近更新 更多