今天遇到一個getJSON的問題,回調函數一直無法執行,檢查了生成的json數據的格式絕對沒問題,getJSON的js語法也沒問題,但就是alert不出來傳回的數據。原來是phpcms的check_hash()函數對遠程調用的方法進行了安全驗證,方法名前沒public_的都不能通過。
(('/^public_/', ROUTE_A) || ROUTE_M =='admin' && ROUTE_C =='index' || (ROUTE_A, ('login' ((['pc_hash']) && ['pc_hash'] != '' && (['pc_hash'] == ['pc_hash' ((['pc_hash']) && ['pc_hash'] != '' && (['pc_hash'] == ['pc_hash' 'hash_check_false'),
phpcms給函數進行了hash驗證,因此,現在方法是這樣寫的:
public_mobile_getjson_ids() { = (['modelid' = (['id'->db->set_model( = ->db->->db->table_name = .'_data' = ->db->get_one(('id'=>),'mobile_type'(['mobile_type' = ('|', ',', ['mobile_type' = (,',' = "id IN()" = ->mobile_db = pc_base::load_model ( 'mobile_type_model' = ->mobile_db->select(,'id,type_name' ( ['sid'] = 'v'.['id'((CHARSET)=='gbk') ['type_name'] = ('gbk', 'utf-8', ['type_name'[] = json_encode(
js部分的getJSON是這樣寫的:
"?m=content&c=content&a=public_mobile_getjson_ids&modelid="+modelid+"&id="+id, newrelation_ids = ''(json=='沒有添加相關文章' += "<li id='"+n.sid+"'>·<span>"+n.type_name+"</span><a href='javascript:;' class='close' onclick=\"remove_relation('"+n.sid+"',"+n.id+")\"></a></li>"'#mobile_type_text'
就好了。要注意phpcms裡面調用遠程地址,方法前加上public啊!!