Отговорете с JavaScript в приложението Rack

Имам приложение Rack, където трябва да отговоря с JavaScript. Опитвам се да задам тип съдържание като JavaScript, докато изпращам отговора, но не работи, изглежда, че пропускам нещо.

Простият отговор, който изпращам, е:

require 'rubygems'   
require 'rack'  
run Proc.new { |env| ['200', {'Content-Type' => 'application/javascript'},["alert('hi')"]]} 

Може ли приложение Rack да отговори с тип съдържание на JavaScript? Или може би браузърът не изпълнява получения JavaScript?


person Lohith MV    schedule 15.12.2014    source източник
comment
Гледали ли сте мрежовия трафик във вашия Firebug или Chrome Tools?   -  person Paul    schedule 15.12.2014
comment
можете ли да покажете останалата част от междинния софтуер? отговорът изглежда добре   -  person yoavmatchulsky    schedule 15.12.2014
comment
Можете ли да публикувате JS, който получава този отговор?   -  person DiegoSalazar    schedule 15.12.2014
comment
@yoavmatchulsky Това е прост код от 2 реда, стартирайте Proc.new { |env| ['200', {'Content-Type' =› 'application/javascript'},[alert('hi')]],В браузъра се изобразява като текст, вместо да се изпълнява javascript.   -  person Lohith MV    schedule 15.12.2014
comment
@diego.greyrobot alert('hi') изобразява в браузъра като HTML/текст вместо да изпълнява javascript   -  person Lohith MV    schedule 15.12.2014
comment
Мисля, че това е уместно: stackoverflow.com/questions/7717382/. Това, което правите, е добре по отношение на настройката на типа съдържание, но браузърът няма да изпълни js код, изтеглен директно по този начин.   -  person matt    schedule 15.12.2014


Отговори (1)


както @matt каза по-горе, и това, което се опитвах да разбера е, че не можете просто да дадете на браузъра js и да очаквате той да работи. Трябва да се изпълни чрез обратно извикване на ajax. Вземете например jQuery:

$.ajax({
  url: "/path/to/your/js",
  dataType: "script"
});

Това свойство dataType казва на jQuery да изпълни скрипта, върнат от сървъра. Въпросът е, че имате нужда от javascript, за да изпълните javascript, просто навигиране до URL няма да го направи.

person DiegoSalazar    schedule 15.12.2014