javascript - jQuery 自动完成菜单单击图像将数据发布到 Express 服务器

标签 javascript jquery express jquery-ui-autocomplete google-books

我有一个可以使用的 jquery 自动完成菜单。它显示包含作者、标题和书籍图像的书籍列表。我想添加点击书籍图片并发布书名的功能来表达app.post以显示书籍简介页面。

这是 jquery 自动完成代码。我添加了不起作用的选择事件。

<script type="text/javascript">
    $(document).ready(function() {

        $("#findBook").autocomplete({
            source: function (request, response) {

                $.ajax({
                    method: "GET",
                    dataType: "json",
                    url: "https://www.googleapis.com/books/v1/volumes?q=" + request.term,


                    success: function (data) {

                        var transformed = data.items.map(function (book) {
                            return {
                                title: book.volumeInfo.title,
                                author: book.volumeInfo.author,
                                image: book.volumeInfo.imageLinks.thumbnail
                            };
                        });

                        response(transformed);
                    }


                });


            },


             select: function(event, ui){

               console.log(ui.title);

                var id = ui.item.title;

                $.ajax({
                    url: "/book_profile_b/" + id,
                    type: "POST",
                    dataType: 'html',
                    data: { id: id },
                    success: function(data){
                        alert(data);
                        var win = window.open();
                        win.document.write(data);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {

                        console.log(xhr.responseText+" - "+thrownError)
                        alert("ERROR:" + xhr.responseText+" - "+thrownError);
                    }
                });

            },


        }).autocomplete("instance")._renderItem = function (ul, item) {
            return $("<li></li>")
                .data("item.autocomplete", item)
                .append("<a>" + "<img src=\"" + item.image + "\" style=\"height: 40%;\" /><br />" + (item.author && item.author.length ? item.author.map(function (x) {
                    return x;
                }).join(" | ") : '') + " - " + item.title + "</a>")
                .appendTo(ul);
        };

    });

在 express 方面。这是我尝试将书名数据发送到的函数。

   app.post('/book_profile_b/:encoded_id', function(req, response,err){

        var book_title = req.params.encoded_id;


        if(err){

            console.log(err);
        }



          request("https://www.googleapis.com/books/v1/volumes?q=" + book_title,
              function (error, resp, data) {
                  if (error) {

                      console.log(error);

                  }


                  else {
                      var gb_data = JSON.parse(data);
                      console.log(gb_data);

                       const gb_description = gb_data.items[0].volumeInfo.description;
                       const gb_image = gb_data.items[0].volumeInfo.imageLinks.thumbnail;




                      response.render('book_profile', {book_description: gb_description, book_image: gb_image});

                  }




              });
 });

最佳答案

$.post("/book_profile_b/" + id).done(function(data){
                        alert(data);
                        var win = window.open();
                        win.document.write(data);
                    }).
                    error(function (xhr, ajaxOptions, thrownError) {    
                        console.log(xhr.responseText+" - "+thrownError)
                        alert("ERROR:" + xhr.responseText+" - "+thrownError);
                    });

你可以使用上面的代码块进行post调用吗?我已经删除了 dataType 并删除了不需要的数据,因为您已经在 url 中传递了 id。

我建议使用$.post

如果出现错误,也请分享该错误。

关于javascript - jQuery 自动完成菜单单击图像将数据发布到 Express 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198500/

相关文章:

javascript - 我创建了一个脚本来放大文本 onmouseover 但无法让事件监听器工作

node.js - 为什么 mongodb session MongoStore 在 session 结束后不消失?

node.js - 在同构 Redux 应用程序中,保持 API 调用较小还是一次性发送所有信息是更好的做法吗?

javascript - 通过ObjectID express js查找用户

javascript - 即使我将 script 标签放在 body 标签末尾之前,Google Chrome 也会首先加载 javascript

javascript - 降低JavaScript中HTML音频的音量

javascript - JQuery Mobile 多页和附加页脚没有样式(Intel XDK)

javascript - 如何使用数据 url 打开下一个模式?

javascript - 如何在自动完成下拉列表中包装文本?

javascript - Angular2 karma 测试 - 如何制作表单字段 "dirty"?