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>    

/ video / metadata(メイソンコンポーネント)

<%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 %>   

コンポーネント呼び出しからのjsonではなく、ページのすべてのhtml要素を返します。
datatype/contentTypeを指定するとparserserrorが発生します

4

1 に答える 1

0

誰かが同じpbを持っている場合に備えて

追加するのを忘れた

<%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>    

/video/metadata (メイソン コンポーネント)

<%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 %>   

数時間節約できることを願っています

于 2013-02-13T16:27:01.410 に答える