2015-03-14 2 views
0

У меня есть код, написанный в Jade, со ссылкой на него. Место назначения ссылки создается Jade. Когда клика нажата, я вижу на моей консоли, что GET-запрос выполняется дважды.Экспресс: почему этот запрос GET выполняется дважды?

Почему это? Как я могу это исправить?

Вот мой код:

Джейд файл:

ul.media-list 
    each paper in paperList 
     div.panel.panel-default 
      div.panel-body 
       li.media 
        div.media-left.media-middle 
         a(href='/publication/view/#{paper.id}') 
          | Some image 
        div.media-body 
         div.btn-group(role='group') 
          //!!! When this link is being clicked, GET is executed twice !!! 
          a.btn.btn-default(href='/publication/view/#{paper.id}') 
           | View 

консоли:

GET /publication/view/123 200 490ms - 5623 
GET /publication/view/123 304 458ms - - 

app.js:

var publication = require('./routes/publication'); 
app.use('/publication', publication); 

publication.js:

var express = require('express'); 
var router = express.Router(); 

router.get('/view/:id', function (req, res) { 
    var data; 
    //Some database functions here 
    //Just an example 
    res.render('publication', {someData: data}); 
}); 
+0

Являются ли медиа-левые и медиа-тела частично перекрывающимися? В этом случае может произойти событие клика для обеих ссылок. – orbitbot

+0

Нет, медиа-левый и медиа-корпус - это два отдельных div. Я только что проверил в сгенерированном HTML. – JNevens

+0

Где находится 'router'? –

ответ

8

Это только гипотеза, но, похоже, ваш браузер использует какой-то алгоритм прогнозирования для предварительной загрузки ссылок, даже прежде чем нажать их. Google Chrome do such things.

Экспресс.js ответил на второй ответ с ответом 304 Not Modified, который указывает, что он был отправлен с действительным значением ETag для проверки ранее кэшированного ответа.

Попробуйте отключить прогнозирование сетевых действий в вашем браузере. Вот как это выглядит в настройках Google Chrome (Settings ->Show advanced settings...):

Google Chrome network actions prediction

Или вы можете попробовать, чтобы убедиться, что первый запрос посылается, прежде чем вы на самом деле нажав на ссылку наведя наведите курсор мыши на него, но не нажмете на него.

Смежные вопросы