Как заставить скрипт Perl выполнять JavaScript из атрибута action?
Я использую скрипты, созданные другими людьми в основном, и основной смысл в том, что мне нужно вызвать 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);}
});
}
}
Я не совсем понимаю, что такое "msg" или его свойство "d", и я даже не знаю, должна ли моя форма быть тем элементом, где она есть. Так что мне здесь не хватает?
Оказывается, я не строю инструкцию ajax полностью или правильно. Я не добавлял никаких данных, которые мне нужно было передать в CGI-скрипт.
Здесь выражение ajax, в котором я закончил:
$.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!