2014-12-17 5 views
0

У меня есть скрипт perl cgi, который принимает 2 параметра.использовать perl cgi значения внутри javascript ajax

У меня есть блок jjery ajax внутри одного и того же скрипта cgi.

Теперь мне нужно использовать эти значения параметра cgi-скрипта внутри блока javascript.

Можно ли это сделать?

if (param) 
{ 
    $insp_id = param("param1"); 
    $section_id = param("param2"); 
} 


my $html = <<BLOCK; 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title> Handling Images order for Inspection: $insp_id and Section: $section_id  </title> 
<link rel="stylesheet" type="text/css" href="new_style.css"> 
<script type="text/javascript" src="jquery-1.8.3.min.js"></script> 
<script type="text/javascript" src="jquery-ui.js"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function(){ 
     jQuery('.reorder_link').on('click',function(){ 
       jQuery("ul.reorder-photos-list").sortable({ tolerance: 'pointer' }); 
       jQuery('.reorder_link').html('save reordering'); 
       jQuery('.reorder_link').attr("id","save_reorder"); 
       jQuery('#reorder-helper').slideDown('slow'); 
       jQuery('.image_link').attr("href","javascript:void(0);"); 
       jQuery('.image_link').css("cursor","move"); 
       jQuery("#save_reorder").click(function(e){ 
         if(!jQuery("#save_reorder i").length) 
         { 
           jQuery(this).html('').prepend('<img src="img/refresh-animated.gif"/>'); 
          //$(this).removeClass('addmsg2'); 
          //$(this).html('<img src="images/refresh-animated.gif"/>'); 
          jQuery("ul.reorder-photos-list").sortable('destroy'); 
          jQuery("#reorder-helper").html("Reordering Photos - This could take a moment. Please don't navigate away from this page.").removeClass('light_box').addClass('notice notice_error'); 

          var h = []; 
          jQuery("ul.reorder-photos-list li").each(function() { h.push(jQuery(this).attr('id').substr(9)); }); 
          //var counter=0; 
          //for (counter=0; counter<h.length; counter++) 
          // document.write(h[counter] + "<br>"); 
          jQuery.ajax({ 
            type: "POST", 
            url: "DoImageReorder.cgi", 
            data: {ids: " " + h + "", insp_id:7004423 , section_id:1 }, 
            success: function(html) 
            { 
              window.location.reload(); 
              /*$("#reorder-helper").html("Reorder Completed - Image reorder have been successfully completed. Please reload the page for testing the reorder.").removeClass('light_box').addClass('notice notice_success'); 
              jQuery('.reorder_link').html('reorder photos'); 
              jQuery('.reorder_link').attr("id","");*/ 
            } 

          }); 
          return false; 
        } 
        e.preventDefault(); 
      }); 
    }); 

}); 
</script> 
</head> 
BLOCK 

В основном я должен заменить 7004423 на insp_id в блоке ajax javascript. Просьба сообщить. Спасибо.

ответ

0

В вашей CGI сделать:

$find="7004423"; 
$html =~ s/$find/$insp_id/g; 

Это заменит все вхождения 7004423 со значением $ insp_id.

2

На стороне сервера вы можете закодировать все переменные в JSon строку,

use JSON; 
my $json_text = encode_json({ 
    insp_id => scalar param("param1"), 
    section_id => scalar param("param2"), 
}); 

затем добавить эту строку в JQuery цепочки документов,

jQuery(document) 
.data("JSON", $json_text) // all server side variables in one place 
.ready(..) 

и, наконец, использовать переменные позже,

var JSON = jQuery(document).data("JSON"); 
console.log(JSON.insp_id); 
+0

Это ошибка: 'param' вернет список, если он доступен, который может выдать ошибку как нечетное e лексический хеш. Или 'my $ whatever = param (" asdf ")' then 'insp_id => $ any' или' scalar (param ("asdf")) 'будет предотвращать это. – Ashley

+0

@ Проверка обновления. –