【问题标题】:Create javascript function for submit button to return data为提交按钮创建javascript函数以返回数据
【发布时间】:2017-07-13 09:58:24
【问题描述】:

我正在 laravel 上创建一个博客,到目前为止,我拥有成功的 js 代码,用于包含标题和内容的帖子。但是我在为标签编写js函数时遇到了一些麻烦。

我想对标签做同样的事情,但我尝试的每件事都会出错。

    <script src="https://cloud.tinymce.com/stable/tinymce.min.js?apiKey=fg5tc8gb4rtw6p9n3njd2hi4965rketxda84pbcfs09hb5x2"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.6.4/tinymce.min.js"></script>
    <script type="text/javascript">
        tinymce.init({
            selector: '.myeditablediv',
            plugins: 'code , save, autoresize , textcolor colorpicker , emoticons, textpattern , wordcount',
            toolbar: 'save , restoredraft , forecolor backcolor, emoticons',
            save_onsavecallback: function () {
                var content = tinymce.activeEditor.getContent();
            console.log(content);
            }
        });

        $(document).on('click', '#SubmitBtn', function () {
            var content = tinymce.activeEditor.getContent();

            var data = {
                'title': $('#title').val(),
                'content': content,
                '_token': '{{csrf_token()}}'
            };
            $.post('/postData', data, function () {
                  console.log(data);
            });
        });

    </script>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <h1>Create the title</h1>

        <form>

            {{csrf_field()}}

            <label for="title">Click here to edit the title of your post!</label>
            <input type="text" name="title" id="title"/>

            <h1>Create the content</h1>

            <div class="myeditablediv">Click here to edit the content of your post!</div>

        </form>

        <input type="button" name="Submit" id="SubmitBtn" value="Submit"/>
</body>
</html>

<script src="https://cloud.tinymce.com/stable/tinymce.min.js?apiKey=fg5tc8gb4rtw6p9n3njd2hi4965rketxda84pbcfs09hb5x2"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.6.4/tinymce.min.js"></script>
<script type="text/javascript">
        tinymce.init({
            selector: '.myeditabletag',  // change this value according to your HTML
            menu: {
                view: {title: 'Edit', items: 'cut, copy, paste'}
            },
            save_onsavecallback: function () {
                var content = tinymce.activeEditor.getContent();
                console.log(content);
            }
        });

        $(document).on('click', '#SubmitBtn', function () {
            var name = tinymce.activeEditor.getContent();

            var data = {
                'name': name,
                '_token': '{{csrf_token()}}'
            };

            $.post('/postTags', data, function () {
                console.log(data);
            });
        });

    </script>
<!DOCTYPE html>
<html>
<head>
</head>
<body>

    <h1>Create a new Tag</h1>

        <form>
        {{csrf_field()}}

            {{--<input type="text" name="name" id="name"/>--}}

            <div class="myeditabletag">Click here to edit the name of your tag!</div>

        </form>
        <input type="button" name="Submit" id="SubmitBtn" value="Submit"/>
</body>
</html>

这里是标签和帖子的 /postData 路由:

Route::post('/postTags', ['uses' => 'TagController@store']);
Route::post('/postData', ['uses' => 'PostController@store']);

这里是 PostController 和 TagController 的存储方法:

public function store(Request $request)
{
    $post = new Post;
    $post->title = $request['title'];
    $post->content = $request['content'];
    $post->save();
}

public function store(Request $request)
{
    $tag = new Tag;
    $tag->name = $request['name'];
    $tag->save();
}

【问题讨论】:

  • 你遇到了什么错误?
  • 我将 $.post 更改为 $.tag 并且它说 $.tag 不是函数。我也将标题更改为标签的名称。即使我这样做了,它仍然不会像在帖子中那样在我的 phpmyadmin 上返回任何数据。
  • 是的,因为 jquery 不提供名为 $.tag 的方法?我很困惑,让你感到困惑。
  • 好的,这是您遇到的一个问题。您正在告诉脚本获取 #tag 的值以在 POST 中填充您的 tag,但是,console.log 返回 tag:undefined - 这是需要解决的问题,因此我的问题 :) @livia跨度>
  • @Andy Holmes 是对的。你能确定你有一个带有 Id of 标签的输入吗?并将 HTML 添加到问题中,以便我们更好地帮助您?

标签: javascript php laravel tinymce


【解决方案1】:

您的 JS 代码有误。您正在选择一个不存在的 ID。您需要选择更改标签的内容,并将其作为 data['name'] 发送。试试下面的代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.6.4/tinymce.min.js"></script>

<script type="text/javascript">
    tinymce.init({
        selector: '.myeditabletag',  // change this value according to your HTML
        menu: {
            view: {title: 'Edit', items: 'cut, copy, paste'}
        },
        save_onsavecallback: function () {
            var content = tinymce.activeEditor.getContent();
            console.log(content);
        }
    });

    $(document).on('click', '#SubmitBtn', function () {
        var name = tinymce.activeEditor.getContent();

        var data = {
            'name': name,
            '_token': '{{csrf_token()}}'
        };

        console.log(data);
        $.post('/postTags', data, function () {

        });
    });

</script>

【讨论】:

  • 您能在帖子中添加更多详细信息吗?错误信息等,以便我们进行故障排除?
  • 我正在查看控制台上的错误。我相信这是 var data POST blog.app/postData 500 (Internal Server Error) send @ jquery.min.js:4 ajax @ jquery.min.js:4 r.(anonymous function) @ jquery.min.js:4 (匿名)@tag:29 dispatch@jquery.min.js:3 q.handle@jquery.min.js:3
  • 您是否尝试过在 $.post 调用之前执行 console.log(data); 以便查看发送的内容?
  • @AndyHolmes 它说标签:未定义
  • 你去@livia
猜你喜欢
  • 2020-01-13
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多