ajaxパラメータはjsonフォーマットを使用します
8031 ワード
以前ajaxが要求したdataはparasでやった.
コード:
これによりバックグラウンドに伝わり,paras=request.GETを直接取得することでparas全体を取得し,paras['name']を用いて伝達されたnameを得ることができる.
状況は少し特殊で、parasに配列のオブジェクトrowsが入ってきて、このような方法でバックグラウンドで結果を印刷できません.つまりparas['rows']はまったく応答しない.request.GETを直接印刷すると、結果が奇妙になります.
ネット上でajaxの伝参でjsonフォーマットの方法を使うことを探して、リンゴが好きだ http://www.cnblogs.com/jhxk/articles/1914026.htmlでjQueryのJSONプラグインの使用について言及しました:http://code.google.com/p/jquery-json/、私もダウンロードして試して、jsファイルを導入します:
次にajaxのコードを次のように書き換えます.
次のように印刷されます.
もっと奇妙で、私のすべてのパラメータはparasのkeyになって、そのvalueは‘’です. これは問題の鍵ではないようで、古い道に戻ったが、配列rowsが分割された場合、この包装過程は有効であるようだ.それで
元のparas.rows.push(rowstr)を置き換えます.request.GETを印刷します.結果は次のとおりです.
OK、要の結果です.paras['rows[]']でrows全体から送られてきた配列を取得できます.ただこの[]はここでは嫌です.
コード:
var paras = {};
paras.name='jack';
$.ajax({
type:'get',
url:'/testchart',
data:$.toJSON(paras),
dataType:'json',
contentType: 'application/json;charset=utf-8',
success: onDataReceived
});
これによりバックグラウンドに伝わり,paras=request.GETを直接取得することでparas全体を取得し,paras['name']を用いて伝達されたnameを得ることができる.
var paras = {};
paras.rows=[];
var rowstr={};
rowstr.property =null;
rowstr.filter =null;
rowstr.casted_type =null;
paras.rows.push(rowstr);
paras.bool_op ='or';
paras.arb_event ='Add Friend Receive';
paras.action='by';
paras.unit='day';
paras.type='general';
paras.limit = 40;
paras.chart_type= 'line';
paras.chart_keys=['Add Friend Request'];
paras.from_date = '2012-09-10';
paras.to_date = '2012-10-10';
paras.project ='pirates';
$.ajax({
type:'get',
url:'/testchart',
data:paras,
dataType:'json',
contentType: 'application/json;charset=utf-8',
success: onDataReceived
});
状況は少し特殊で、parasに配列のオブジェクトrowsが入ってきて、このような方法でバックグラウンドで結果を印刷できません.つまりparas['rows']はまったく応答しない.request.GETを直接印刷すると、結果が奇妙になります.
<QueryDict: {u'project': [u'pirates'], u'rows[0][filter]': [u''], u'chart_keys[]': [u'Add Friend Request'], u'rows[0][property]': [u''], u'rows[0][casted_type]': [u''], u'bool_op': [u'or'], u'from_date': [u'2012-09-10'], u'limit': [u'40'], u'chart_type': [u'line'], u'action': [u'by'], u'type': [u'general'], u'arb_event': [u'Add Friend Receive'], u'unit': [u'day'], u'to_date': [u'2012-10-10']}>
ネット上でajaxの伝参でjsonフォーマットの方法を使うことを探して、リンゴが好きだ http://www.cnblogs.com/jhxk/articles/1914026.htmlでjQueryのJSONプラグインの使用について言及しました:http://code.google.com/p/jquery-json/、私もダウンロードして試して、jsファイルを導入します:
<script type="text/javascript" src="/static/js/jquery.json-2.3.min.js"></script>
次にajaxのコードを次のように書き換えます.
$.ajax({
type:'get',
url:'/testchart',
data:$.toJSON(paras),
dataType:'json',
contentType: 'application/json;charset=utf-8',
success: onDataReceived
});
次のように印刷されます.
<QueryDict: {u'{"rows":[{"property":null,"filter":null,"casted_type":null}],"bool_op":"or","arb_event":"Add Friend Receive","action":"by","unit":"day","type":"general","limit":40,"chart_type":"line","chart_keys":["Add Friend Request"],"from_date":"2012-09-10","to_date":"2012-10-10","project":"pirates"}': [u'']}>
もっと奇妙で、私のすべてのパラメータはparasのkeyになって、そのvalueは‘’です. これは問題の鍵ではないようで、古い道に戻ったが、配列rowsが分割された場合、この包装過程は有効であるようだ.それで
paras.rows.push($.toJSON(rowstr));
元のparas.rows.push(rowstr)を置き換えます.request.GETを印刷します.結果は次のとおりです.
<QueryDict: {u'chart_keys[]': [u'Add Friend Request'], u'bool_op': [u'or'], u'project': [u'pirates'], u'rows[]': [u'{"property":null,"filter":null,"casted_type":null}'], u'from_date': [u'2012-09-10'], u'limit': [u'40'], u'chart_type': [u'line'], u'action': [u'by'], u'type': [u'general'], u'arb_event': [u'Add Friend Receive'], u'unit': [u'day'], u'to_date': [u'2012-10-10']}>
OK、要の結果です.paras['rows[]']でrows全体から送られてきた配列を取得できます.ただこの[]はここでは嫌です.