У меня есть следующий Coffeescript:

$(document).ready ->`
        $.ajax 'http://www.omdbapi.com/?i=tt1285016',
               type: 'GET'
               dataType: 'json'
               error: (jqXHR, textStatus, errorThrown) -> $('body').append "AJAX Error: #{textStatus}"          
               success: (data, textStatus, jqXHR) -> $('body').append "Successful AJAX call: #{data}"

Однако это генерирует следующий Javascript, который мне не подходит:

(function() {
  $(document).ready(function() {
    return $.ajax('http://www.omdbapi.com/?i=tt1285016');
  });

  ({
    type: 'GET',
    dataType: 'html',
    error: function(jqXHR, textStatus, errorThrown) {
      return $('body').append("AJAX Error: " + textStatus);
    },
    success: function(data, textStatus, jqXHR) {
      return $('body').append("Successful AJAX call: " + data);
    }
  });

}).call(this);

Может ли кто-нибудь сказать мне, где это не так?

Спасибо Адам

0
adamjmarkham 24 Мар 2013 в 21:47
1
Ваш код отлично работает на coffeescript.org (без `)
 – 
Ven
24 Мар 2013 в 21:50

1 ответ

Лучший ответ

Мне не удалось скомпилировать ваш текущий код (CoffeeScript version 1.6.1), но если вы удалите символ ` после $(document).ready ->, он скомпилируется в

(function() {

  $(document).ready(function() {
    return $.ajax('http://www.omdbapi.com/?i=tt1285016', {
      type: 'GET',
      dataType: 'json',
      error: function(jqXHR, textStatus, errorThrown) {
        return $('body').append("AJAX Error: " + textStatus);
      },
      success: function(data, textStatus, jqXHR) {
        return $('body').append("Successful AJAX call: " + data);
      }
    });
  });

}).call(this);

Я не уверен, как CoffeeScript обрабатывает разрывы строк, но я предполагаю, что вы компилируете файл с Windows end-of-lines (CRLF) в системе *nix, и это вызывает проблему .

Я говорю это, потому что что-то вроде следующего кода:

 $(document).ready ->

        $.ajax 'http://www.omdbapi.com/?i=tt1285016',

      type: 'GET'

      dataType: 'html'

      error: (jqXHR, textStatus, errorThrown) -> $('body').append "AJAX Error: #{textStatus}"

      success: (data, textStatus, jqXHR) -> $('body').append "Successful AJAX call: #{data}"

Компилируется в опубликованный вами. (обратите внимание, что в строке 3 после , есть разрыв строки)

0
fardjad 24 Мар 2013 в 22:24
Спасибо, в конечном итоге возникла проблема с моим текстовым редактором, оставляющим пробелы позади
 – 
adamjmarkham
24 Мар 2013 в 22:14