2013-02-12 162 views
0
<script language="JavaScript"> 
var result = {}; 
var data; 
function load_metadata (id) { 
$.ajax({ 
    url: "/video/metadata", 
    type: "POST", 
    data: id, 
    cache: false, 
    //dataType: "json", 
    //contentType: 'application/json', 
    success: function(data) { 
     result = data; 
    }, 
    error: function(e, xhr){ 
     alert('slideshow data load error: '); 
    } 
});   
alert(result.toSource()); //({}) 
} 
</script>  

/视频/元(梅森成分)JSON Ajax请求返回页面的每一个html元素

<%class> 
use JSON; 
has 'data';  
</%class> 
<%init> 

use Data::Dumper; 
print STDERR Dumper($.data); # $VAR1 = '"815"' 

my $item_hash->{'item'} = "test"; # Valid JSON in JSONLint.com 

my $json = to_json($item_hash, { ascii => 1 }); 

print STDERR Dumper($json); # $VAR1 = '{"item":"test"}'; 
</%init> 
<% $json %> 

它返回从组件调用页面的每一个HTML元素,而不是JSON!
指定数据类型/ contentType中得到parserserror

+0

刚一说明,这有什么好与jQuery做。 – 2013-02-12 22:44:19

+0

也与AJAX无关..一个问题是,除了单个JSON输出外,您无法打印任何内容 – charlietfl 2013-02-12 22:49:13

回答

0

万一某一个具有相同的PB

忘了为了shorcut组件继承添加

<%flags>
extends => undef
</%flags>

inherit => undef标志,
取消注释dataType并添加
'async': false,

所以最终的工作代码为:

<script language="JavaScript"> 
var result = {}; 

function load_metadata (id) { 
$.ajax({ 
    url: "/video/metadata", 
    type: "POST", 
    data: id, 
    cache: false, 
    dataType: "json", 
    'async': false, 
    success: function(data) { 
     result = data; 
    }, 
    error: function(e, xhr){ 
     alert('slideshow data load error: '); 
    } 
});   
alert(result.toSource()); //({"item":"test"}) 
} 
</script>  

/视频/元(梅森成分)

<%flags> 
    extends => undef 
</%flags> 

<%class> 
use JSON; 
has 'data';  
</%class> 

<%init> 

use Data::Dumper; 
print STDERR Dumper($.data); # $VAR1 = '"815"' 

my $item_hash->{'item'} = "test"; # Valid JSON in JSONLint.com 

my $json = to_json($item_hash, { ascii => 1 }); 

print STDERR Dumper($json); # $VAR1 = '{"item":"test"}'; 
</%init> 
<% $json %> 

希望能为您节省几个小时