2016-11-22 2 views
1

Как получить скрипт Perl из JavaScript, вызванный из атрибута action?Проблема, выполняющая Perl CGI из JavaScript

Я использую скрипты, созданные другими людьми в основном, а основной смысл в том, что мне нужно вызвать CGI-скрипт из JS-функции.

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

Мне нужно передать некоторые флажки в скрипт Perl и вернуть некоторые файлы на основе состояний флажка. Я знаю, что скрипт Perl отлично работает без необходимости выполнять JavaScript, но я не знаю, как проверить, мобильное устройство или нет в Perl, и я это делаю в JS.

Все, что мне нужно, это выполнить скрипт CGI, передав ему ту же информацию, что и если он был вызван непосредственно из формы, но ничего не делает.

Вот мой JavaScript:

function downloadFiles(){ 
    var isMobile = function(){ 
     try {document.createEvent("TouchEvent"); return true;} 
     catch(e) {return false;} 
    } 
    && (/Mobi/i.test(navigator.userAgent)); 
    if(!isMobile){ 
     $.ajax({ 
      type:"Post", 
      url:"https://www.mywebsite.com/cgi-bin/myPerlScript.cgi", 
      success:function(msg){$("#myHtmlForm").html(msg.d);} 
     }); 
    } 
} 

Я не знаю, что правильно «сообщ» или его свойство «d» есть, и я даже не знаю, если моя форма должна быть элементом, где это является. Так что мне здесь не хватает?

+3

Какая у вас проблема? – ikegami

+0

Вы можете попробовать скачать файл с плагином загрузки файла jQuery: http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/ –

+0

@Meloviz url: should be '/ cgi-bin/myPerlScript.cgi' – mkHun

ответ

0

Оказывается, я не строю инструкцию ajax полностью или правильно. Я не добавлял никаких данных, которые мне нужно было передать в CGI-скрипт.

Вот заявление Аякса я закончил с:

$.ajax({ 
    type:"POST", 
    url:"/cgi-bin/myPerlScript.cgi", 
    data:$("#myHtmlForm").serialize(), 
    error:function badCall(){location.href="https://www.mywebsite.com/error.html";} 
}); 

Спасибо @ikegami, @mkHun, @simbabque и @DaveCross!

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