반응형
보통 자바스크립트를 통해서 팝업창을 띄울때 이렇게 작성한다.
window.open(_link, _name, _style);
단점이 하나있는데 팝업을 띄운후 창을 닫지 않은 상태에서 동일한 창을 다시 팝업으로 띄울경우
활성화가 되지 않는다는 것 이다.
이를 해결하기 위해서  다음과 같이 처리해주면 된다.

var obj = window.open(_link, _name, _style);
obj.focus();


반응형
1. http://www.uploadify.com/ 에서 jQuery플러그인을 받는다.(asp.net)

 [Uploadify.htm]


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title>파일업로드 : jQuery + Uploadify + ASP.NET</title>

    <link href="uploadify.css" rel="stylesheet" type="text/css" />

    <script src="../../js/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script>

    <script src="jquery.uploadify.v2.1.0.js" type="text/javascript"></script>

    <script src="swfobject.js" type="text/javascript"></script>

    <script type="text/javascript">

        $(document).ready(function () {

        // Uploadify 파일 업로드 컨트롤 : Flash가 설치가 되어있어야 함

            $('#fileInput').uploadify({

                'uploader' : 'uploadify.swf'// Uploadify 컨트롤 지정

                'script' : 'Uploadify.ashx'// 서버측 스크립트, ASP.NET, ASP, PHP, JSP

                'cancelImg''cancel.png'// 취소 이미지

                'auto' : false// true면 파일선택시 바로 자동으로 업로드됨

                'folder''/Uploads'// 업로드할 폴더 : 가상디렉터리 + 업로드폴더

                // 업로드 완료시 처리 :

                //      주요 속성은 http://www.uploadify.com/documentation/ 참고

                'onComplete'function (event, queueID, fileObj, response, data) {

                    $('#lblFile').append('<a href=/WebJQuery' + fileObj.filePath + '>'

                    + fileObj.name + '</a><br>');

                }

            });

            // 버튼 클릭시 업로드

            $('#btn').click(function () { $('#fileInput').uploadifyUpload(); });

        });

    </script>

</head>

<body>

    <input id="fileInput" name="fileInput" type="file" />

    <input type="button" id="btn" value="업로드" />

    <div id="lblFile"></div>

</body>

</html>

 




-------------------------------------------------------------------------------------


 

[Uploadify.ashx]


<%@ WebHandler Language="C#" Class="Uploadify" %>

 

using System;

using System.Web;

 

public class Uploadify : IHttpHandler {

   

    public void ProcessRequest (HttpContext context) {

        // Filedata로 넘겨온 파일 값 받기

        HttpPostedFile file = context.Request.Files["Filedata"];

        // 저장할 폴더

        string targetDirectory = System.IO.Path.Combine(

        context.Request.PhysicalApplicationPath,

        context.Request["folder"].Replace("/"""));

        // 저장할 폴더 + 파일명

        string targetFilePath = System.IO.Path.Combine(

            targetDirectory, file.FileName);

        // 파일 저장(업로드)

        file.SaveAs(targetFilePath);

 

        context.Response.Write("RedPlus");

    }

 

    public bool IsReusable {

        get {

            return false;

        }

    }

 

}
[출처] : http://holland14.tistory.com/538
 

2. 파일을 업로드할경우 변수를 넘겨야하는 경우가 있다.
1)의 소스대로 하면 변수는 $(document).ready()상에 지정해야하는데 데이터를 미리 받아오기전에는
변수를 넘기기 힘들다. 
그래서 

            // 버튼 클릭시 업로드

            $('#btn').click(function () { $('#fileInput').uploadifyUpload(); });



이부분에 변수를 넘길 수 있는 처리를 추가해야한다.
var _obj = $('#fileInput');

_obj.uploadifySettings('scriptData', { 'code1': 'data01', 'code2': 'data02' });

_obj.uploadifyUpload();

이부분을 처리해주면 업로드 할때 변수(code1,code2)의 값을 전달할 수 있다.

반응형
                WebClient request = new WebClient();
                request.Credentials = new NetworkCredential(ftp_uid, ftp_upw);
                byte[] newFileData = request.DownloadData(ftp_url  + "/" + filecode);

                Response.ClearHeaders();
                Response.AddHeader("Content-Type", "application/vnd.ms-excel");
                Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", filename));
                Response.ContentType = "multipart/form-data";
                Response.BinaryWrite(newFileData);
                Response.End();

 원격FTP에 있는 데이터를 byte[]로 읽어서 저장하는 방법이다.
반응형
1) $('.aaa').length

아주간단하다.(자주 까먹어서 곤란할지경이다.)
html에서  class가 'aaa'로 작성된 개체들의 수를 반환한다.

2) $('input[name=bbb]').length

비슷한 예재로 1)의경우에는 class를 찾지만 2)의경우에는 name를 찾는다.

ex)
<div id='1' class='aaa' name='bbb'></div>
<div id='1' class='aaa' name='bbc'></div>
<div id='1' class='aaa' name='bbb'></div>

위태그를 1),2)로 돌려보면
1)의 경우는 3이 나오고
2)의 경우는 2가 나온다.

 
반응형
<a href='#' onclick='test()'></a>
이런식으로 하이퍼링크에  자바스크립트 함수를 호출하는 경우가 많다.
<a href를 사용하게 되면 링크클릭시 페이지 스크롤이 자동으로 초기화 된다.
이를 방지하기 위해

<a href='#;return false;' onclick='test()'></a> 

위와같이 추가해주면 된다.
이를 몰라서 Ajax상의 Post액션의 문제인줄 알고 쌩쇼를 했다.
asp.net상에서 ScrollHolder 클래스를 적용해보기도 하고
별의별짓을 해봤는데 가만히 보니 문제가 <a href='#'태그의 문제였던거다.
하나하나 비교해보니 어떤 태그에서는 스크롤 초기화가 발생하지 않았다.
Ajax의 Post서버 호출이 일어났음에도 불구하고 스크롤이 초기화 되지 않아서
하나 하나 찾다보니 <a href의 문제를 발견한거라 할 수 있다.

가끔 이렇게 기초적인 데서 막히는 경우가 있으니 침착하게 잘 찾아보자. 
반응형
var globalVar = "0";
a();
b();
function a(){
            $.ajax({
                type: "POST",
                url: "a.aspx/FunctionName",
                data: "{'_work_code':'" + _work_code + "','_regdate':'" + _reg_date + "'}", 
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    var _rst = msg.d;
                    globalVar = "2";
                }
            });
}
function b(){
            globalVar = "1";
}


 
위와 같이 선언된 jQuery함수에서 자바스크릅트의 전역변수를 선언하면
Post로값을 넘겨서인건지(정확히는 모름)  전달에 지연된다.
a()가 먼저 호출되었음에도 불구하고 globalVar의 값은 2가 아닌 1로 정의 되버린다.
이를 막기위해 한가지를 추가해줘야한다.

 $.ajax({
                type: "POST",
                url: "a.aspx/FunctionName",
                async:false, 
                data: "{'_work_code':'" + _work_code + "','_regdate':'" + _reg_date + "'}", 
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    var _rst = msg.d;
                    globalVar = "2";
                }
            });

강조된 부분을 추가해주면 자바스크립트의 전역변수가 제대로 전달된다. 
반응형
jQuery를 이용하여 동일한 페이지(a.aspx/ a.aspx.cs)상의 서버함수에 접근하는 방법이다.
            $.ajax({
                type: "POST",
                url: "a.aspx/FunctionName",
                data: "{'_work_code':'" + _work_code + "','_regdate':'" + _reg_date + "'}", 
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    var _rst = msg.d;
                }
            });
//---------------------------------------------
 Post방식으로 서버함수에 접근하는 방법이다.
1) url: "a.aspx/FunctionName",
 이부분에서 a.aspx는 접근해야할 함수가 존재하는 페이지(스크립트가 선언된 페이지와 동일하다.)
/뒤의 FunctioinName는 서버스크립트에 존재하는 함수명이다.
2) data: 부분은 FunctionName에 전달해야할 파라미터들이다.
 '_work_code':'" + _work_code + "' 에서 앞부분이 서버에 선언된 파라미터명이고 반드시 동일한 이름으로 작성되어야하며
서버함수의 파라미터 갯수와 정확히 일치해야한다. 뒷부분은 파라미터에 전달할 클라이언트의 값이다.
3)contentType: , dataType: 이것들은 선언해줘야할 타입들인데 그다지 손댈일이 없으므로 패스
4) success: function (msg) {
서버함수로 전달된 값이 계산을 통해서 반환된다면 msg로 값이 넘어온다.
msg.d로 값을 확인할 수 있으며 배열로 넘어오는 경우에는 msg.d[0], msg.d[1]과 같은 방식으로 확인하면 된다. 
반응형
1.먼저 [using System.Collections.Specialized;]이 선언돼있어야 한다.
2. QueryString을 처리할 함수를 만든다.
        public NameValueCollection getQueryStringPrms(string url)
        {
            string keyValue = string.Empty;
            NameValueCollection collection = new NameValueCollection();
            string[] querystring = url.Split('&');
            if (querystring != null && querystring.Count() > 0)
            {
                for (int i = 0; i < querystring.Count(); i++)
                {
                    string[] pair = querystring[i].Split('=');
                    collection.Add(pair[0].Trim('?'), pair[1]);
                }
            }
            return collection;
        } 
3. [WebMethod]에서 getQueryStringPrms을 호출한다.
        NameValueCollection collection = comm.getQueryStringPrms(HttpContext.Current.Request.UrlReferrer.Query);
        
         string temp = HttpContext.Current.Server.UrlDecode(collection["code"]);
 
반응형
먼저 부모창에 function test(){}이라는 함수가 있다고 가정한다.

1)팝업창일경우
opener.test();
2)iframe일경우 
parent.test(); 
와 같이 호출하면 된다. (무지쉽지?) 
3) 부모창에서 iframe내 함수접근
   var ifr = document.getElementById('iframeID');
    ifr.contentWindow.function_name();
부모창에서 'iframeID'이라는 iFrame에 지정된 페이지의 function_name()함수에 접근하는 방법이다.

4) <a href='www.url.com' target='_parent'>link</a>으로 지정해도 됨. 물론 자바스크립트를 제어하는 것은 아니라서
     parent.location.href='www.url.com';과 동일한 효과만 볼수 있음. 페이지 이동에 국한하여 사용할 수 있는 태그이다.
     기초적이고 간단한 것인데 종종 잊어먹곤 하니 유의할 것.


반응형
function get_QueryString(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return decodeURIComponent(results[1].replace(/\+/g, " "));
}
 

+ Recent posts