2013-09-27 1 views
0

내 로컬 저장소가 페이지에 있습니다. user_id를 가져 와서 데이터 URL에 배치하여 쿼리를 작성하려고합니다. 누군가 내가 무엇을 잘못하고 있는지 알려주실 수 있습니까?어떻게 데이터를 읽을 URL에 localstorage var을 삽입합니까?

<!--GET REMOTE JSON DATA-->  
<script> 
var app = new kendo.mobile.Application(); 
    var theuser = localStorage.getItem('user_ID'); //grab user ID from local  storage 
    var IRISalerts = new kendo.data.DataSource({ 
     transport: { 
read: { 
    url: "http://procdev.irisdispatch.com/ws/mobilefunctions.cfc? method=getAlerts&user_id='+theuser'", 
    dataType: "json", // "jsonp" is required for cross-domain requests; use "json" for  same-domain requests 
} 

}, 당신은 당신의 쿼리 매개 변수를 인코딩하는 .encodeURIComponent()를 사용하지 않는

답변

0

, 당신은하지 않습니다; 잘못된 URL 문자 (특수 문자 등)가있을 수 있습니다. 이 함수를 사용해보십시오. 객체 -> 쿼리 문자열 변환에 사용할 수 있습니다 (저장소에 json objs를 저장하는 경우).이 함수는 key = value 쌍에서도 잘 수행됩니다. 단일 쿼리 매개 변수 .encodeURIComponent()의 경우 작업을 수행합니다 ...

function uriParamNcoder(obj) { 
    if (
     Object.prototype.toString.call(obj) === "[object String]" 
    ) { 
     return obj.split('=') 
      .map(
       function (part) { 
        return encodeURIComponent(part); 
       } 
     ) 
      .join('=') 
      .replace(/%20/g, '+'); 
    } 
    var q_str_arr = []; 
    objTrace(
     obj, 
     function (k, v, trace) { 
      var tmp = trace.match(/^\[(.+?)\](.*)$/); 
      q_str_arr.push(
       encodeURIComponent(tmp[1]) + 
       ((tmp[2] !== void 0) ? encodeURIComponent(tmp[2]) : "") + "=" + encodeURIComponent(v) 
      ); 
     } 
    ); 

    function objTrace(obj, fn) { 
     if (
      obj === Object(obj) && (typeof fn === "function") 
     ) { 
      objParamTracer.apply(
       obj, [obj, fn].concat(Array.prototype.slice.call(arguments, 2)) 
      ); 
     } 
     return obj; 
    } 

    function objParamTracer(obj, fn, trace) { 
     trace || (trace = ""); 
     if (
      Object.prototype.toString.call(obj) === "[object Array]" 
     ) { 
      obj.forEach(
       function (o, k) { 
        if (o === Object(o)) { 
         return objParamTracer.apply(
          o, [o, fn].concat(trace + "[]") 
         ); 
        } else { 
         return fn.apply(
          this, [k, o].concat(trace + "[]") 
         ); 
        } 
       }, 
       obj 
      ); 
     } else { 
      ownEach(
       obj, 
       function (p, o) { 
        if (
         o === Object(o) 
        ) { 
         return objParamTracer.apply(
          obj, [o, fn].concat(trace + "[" + p + "]") 
         ); 
        } else { 
         return fn.apply(
          this, [p, o].concat(trace + "[" + p + "]") 
         ); 
        } 
       } 
      ); 
     } 
    } 

    function ownEach(obj, fn) { 
     for (var prop in obj) { 
      if (obj.hasOwnProperty(prop)) { 
       fn.call(obj, prop, obj[prop]); 
      } 
     } 
     return obj; 
    } 

    return q_str_arr.join('&').replace(/%20/g, '+'); 
} 
관련 문제