2015年2月24日 星期二

AJAX與WebServer與JSON

.aspx :

 var JsObj = {SaveData: daveAllData};
 var datastr = JSON.stringify(JsObj);

        $.ajax({
            async: false,
            type: "POST",
            url: "/WebServiceGetData.asmx/SaveAll",
            data: datastr,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (responseI) {
                console.log("ajax s in");
                alert("儲存成功");
                var x2 = JSON.parse(responseI.d);
                console.log(x2);
            },
            error: function (response) {
                console.log("fail s");
            }
        })

data 傳值 一定要JSON格式 所以要做上面兩行的轉換
第一行SaveData是自訂的 後面的daveAllData才是資料
第二行就是把它序列化嚕

webserver:

 [WebMethod]
        public string SaveAll(object SaveData)
        {
            var SData = JsonConvert.SerializeObject(SaveData);
            dynamic stuff = JsonConvert.DeserializeObject(SData);

            var x = stuff[0].fieldid;
            var y = stuff[0].fieldvalue;
            var x2 = stuff[1].fieldid;
            var y2 = stuff[1].fieldvalue;
            //----
            return x;
        }

接收的資料 也要做轉換 即可以把值讀出來


stuff  沒有length方法
要嘛
JArray stuff = (JArray)JsonConvert.DeserializeObject(SData);
stuff.Count 就是它的長度

不然就
foreach的方式
             var x = "";
            foreach (var item in stuff)
            {
                x += item.fieldid;
                x += item.fieldvalue;
            }
           


2015年2月15日 星期日

iframe 鑲嵌網頁

父:
<iframe src="./index.aspx" name="IIframe" scrolling="auto" width="100%"  marginwidth="0" marginheight="0" id="IIframe" scrolling="no"></iframe>
scrolling 是視窗右邊的上下bar條開或不開

子:
<head>    
<script>     
function resize()
{      
parent.document.getElementById("mainframe").height=document.body.scrollHeight; //傳長度回父視窗
}  
</script>
</head>

在body裡加入
<body onload="resize();" > 
即可

父:
$("#IIframe")[0].contentWindow.callme= "hello";
callme 是變數名稱 隨取
子:
alert(callme);


父呼叫子視窗的function
父:
$("#IIframe")[0].contentWindow.saveAll();
function saveAll(){

}

2015年2月11日 星期三

jQuery 抓值

抓某個資料 $("#divGvLeave").find("tr[style='background-color:Gray;']").each(function () { $(this).find("td").eq(6).html(""); });

//-----------------------------------
<a id="a123">
<span>原值</span>
</a>

jq 語法
$('a#a123 span').html('帶入');

就可用帶入 取代 原值 了

jq語法 只要下對 基本上沒有抓不到的東西
ex:
$("select[id*='id123'] option[value='value123']").attr('selected', 'true');
把id叫id123 的select物件 且裡面option 的 value = value123的值的該選項 變成預設

id*='id123'
*字號是指 不管前後還有沒有 只要有該字串就可

id$='id123'
$必定要以 id123結尾

id^='id123'
^必定要以 id123開頭
-------------------------------------------------------

取checkbox的select的值(選項本身有id 的情況)

CBItem 用來放打勾的選項的value
$('input[id*="'id"]:checked').each(function () { CBItem += $(this).val()+"," });
CBItem = CBItem.substring(0, CBItem.length - 1); //去掉最後一個 逗點


//--------------------
修改div style的方法
$('#PrintMenu').css({ left: document.body.scrollWidth*0.92 });

document.body.scrollWidth 是整個畫面的寬

2015年2月4日 星期三

append 物件 jquery mobile 失效問題

為順序問題 所以只要jQueryMobile再重新觸發一次就好

尾巴加上 .trigger('create')就可以解決了

$('ID').append('<label for=id>這是一個label</label>').trigger('create');

jQ就是那麼簡單~

 

2015年2月2日 星期一

Oracle tnsnames ora 設定

tnsnames ora 設定字串弄好卻還是看不到的問題
於是我們要去系統設定環境變數 告訴它位置


變數名稱:NLS_LANG
值:TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5 

新增
變數名稱:TNS_ADMIN 
值: 到tnsnames ora的路徑如下圖
(ex:D:\app\DannyLo\product\11.2.0\client_1\Network\Admin\Sample)


即可!!~

--------------------------------------------------------
之後可能還會遇到 中文亂碼的問題


於此位子添加變數
  • 變數名稱: NLS_LANG
  • 變數值: TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950
即可解決