none
关于context.response.write向前台传递多个值的问题 RRS feed

  • 问题

  •  后台:
                    string remoteip = GetCustomerIP();  
                    if (remoteip == "127.0.0.1")  
                        remoteip = GetHostIP();  
                    SqlDataReader sdr=DBManager.getSdr("select [mask],[gateway],[mac] from [ipAddress] where [ip]='" + remoteip + "'");  
                    if (sdr.HasRows)  
                    {  
                        sdr.Read();  
                        string mask = sdr[0].ToString();  
                        string gateway = sdr[1].ToString();  
                        string mac = sdr[2].ToString();  
                        sdr.Close(); DBManager.closeCon();  
                    }  
                    context.Response.Write(remoteip);//这样写只能传递一个值,请问如何传递多个值(mask、gateway、mac)。 
    前台:

            function get_Ip() {  
                createXMLHttpRequest();  
                xmlHttp.open("GET""dl_Addip.ashx?get_Ip"true);  
                xmlHttp.onreadystatechange = function () {  
                    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {  
                        document.getElementById("txt_Singleip").value = xmlHttp.responseText;
                        //除了上面的赋值之外,我还想给下面元素赋值:
                        document.getElementById("txt_mask").value=xmlHttp.responseText;
                        document.getElementById("txt_gateway").value=xmlHttp.responseText;
                        document.getElementById("txt_mac").value=xmlHttp.responseText;
      
                    }  
                }  
                xmlHttp.send(null);  
            } 
    2009年2月21日 17:18

答案

  • 办法有多个,最好使用JSON格式,容易解析。如果没有特殊字符也可以这样

    context.Response.Write(remoteip+ "@" + mask + "@" + gateway + "@" + mac);


    js端

    var d = xmlHttp.responseText;
    data = d.split("@")
    document.getElementById("txt_Singleip").value = data[0]
    document.getElementById("txt_mask").value = data[1]
    document.getElementById("txt_gateway").value = data[2]
    document.getElementById("txt_mac").value = data[3]

    孟宪会
    • 已标记为答案 杜宏宇 2009年2月22日 14:02
    2009年2月22日 1:29
    版主
  • 杜宏宇 说:

    老实,如果用jason的话怎么做呢?


    1,你需要将http://www.json.org/json2.js包含在你的代码中,
         JSON 的相关知识http://www.json.org/
        

    2,完整代码

    <%@ Page Language="C#" %>  
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
     
    <script runat="server">  
     
      protected void Page_Load(object sender, EventArgs e)  
      {  
        if (Request.QueryString["get"] != null)  
        {  
          string remoteip = "127.0.0.1";  
          string mask = "maskmaskmask";  
          string gateway = "gatewaygatewaygateway";  
          string mac = "macmacmacmac";  
          string JSONString = "{\"remoteip\":\"" + remoteip + "\",\"mask\":\"" + mask + "\",\"gateway\":\"" + gateway + "\",\"mac\":\"" + mac + "\"}";  
          Response.ClearContent();  
          Response.Write(JSONString);  
          Response.End();  
        }  
      }  
    </script>  
     
     
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head id="Head1" runat="server">  
      <title></title>  
      <script type="text/javascript">  
        if (!this.JSON) {  
          JSON = {};  
        }  
        (function() {  
     
          function f(n) {  
            // Format integers to have at least two digits.  
            return n < 10 ? '0' + n : n;  
          }  
     
          if (typeof Date.prototype.toJSON !== 'function') {  
     
            Date.prototype.toJSON = function(key) {  
     
              return this.getUTCFullYear() + '-' +  
                     f(this.getUTCMonth() + 1) + '-' +  
                     f(this.getUTCDate()) + 'T' +  
                     f(this.getUTCHours()) + ':' +  
                     f(this.getUTCMinutes()) + ':' +  
                     f(this.getUTCSeconds()) + 'Z';  
            };  
     
            String.prototype.toJSON =  
            Number.prototype.toJSON =  
            Boolean.prototype.toJSON = function(key) {  
              return this.valueOf();  
            };  
          }  
     
          var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,  
            escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
            gap,
            indent,
            meta = {    // table of character substitutions
              '\b': '\\b',
              '\t': '\\t',
              '\n': '\\n',
              '\f': '\\f',
              '\r': '\\r',
              '"': '\\"',
              '\\': '\\\\'
            },
            rep;
          function quote(string) {
            escapable.lastIndex = 0;
            return escapable.test(string) ?
                '"' + string.replace(escapable, function(a) {  
                  var c = meta[a];  
                  return typeof c === 'string' ? c :  
                        '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);  
                }) + '"' :
                '"' + string + '"';
          }
          function str(key, holder) {
            // Produce a string from holder[key].
            var i,          // The loop counter.
                k,          // The member key.
                v,          // The member value.
                length,
                mind = gap,
                partial,
                value = holder[key];
            // If the value has a toJSON method, call it to obtain a replacement value.
            if (value && typeof value === 'object' &&
                    typeof value.toJSON === 'function') {
              value = value.toJSON(key);
            }
            // If we were called with a replacer function, then call the replacer to
            // obtain a replacement value.
            if (typeof rep === 'function') {
              value = rep.call(holder, key, value);
            }
            // What happens next depends on the value's type.
            switch (typeof value) {
              case 'string':
                return quote(value);
              case 'number':
                // JSON numbers must be finite. Encode non-finite numbers as null.
                return isFinite(value) ? String(value) : 'null';
              case 'boolean':
              case 'null':
                return String(value);
                // If the type is 'object', we might be dealing with an object or an array or
                // null.
              case 'object':
                // Due to a specification blunder in ECMAScript, typeof null is 'object',
                // so watch out for that case.
                if (!value) {
                  return 'null';
                }
                // Make an array to hold the partial results of stringifying this object value.
                gap += indent;
                partial = [];
                // Is the value an array?
                if (Object.prototype.toString.apply(value) === '[object Array]') {
                  // The value is an array. Stringify every element. Use null as a placeholder
                  // for non-JSON values.
                  length = value.length;
                  for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                  }
                  // Join all of the elements together, separated with commas, and wrap them in
                  // brackets.
                  v = partial.length === 0 ? '[]' :
                        gap ? '[\n' + gap +
                                partial.join(',\n' + gap) + '\n' +
                                    mind + ']' :
                              '[' + partial.join(',') + ']';
                  gap = mind;
                  return v;
                }
                // If the replacer is an array, use it to select the members to be stringified.
                if (rep && typeof rep === 'object') {
                  length = rep.length;
                  for (i = 0; i < length; i += 1) {
                    k = rep[i];
                    if (typeof k === 'string') {
                      v = str(k, value);
                      if (v) {
                        partial.push(quote(k) + (gap ? ': ' : ':') + v);
                      }
                    }
                  }
                } else {
                  // Otherwise, iterate through all of the keys in the object.
                  for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                      v = str(k, value);
                      if (v) {
                        partial.push(quote(k) + (gap ? ': ' : ':') + v);
                      }
                    }
                  }
                }
                // Join all of the member texts together, separated with commas,
                // and wrap them in braces.
                v = partial.length === 0 ? '{}' :
                    gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                            mind + '}' : '{' + partial.join(',') + '}';
                gap = mind;
                return v;
            }
          }
          // If the JSON object does not yet have a stringify method, give it one.
          if (typeof JSON.stringify !== 'function') {
            JSON.stringify = function(value, replacer, space) {
              var i;
              gap = '';
              indent = '';
              // If the space parameter is a number, make an indent string containing that
              // many spaces.
              if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                  indent += ' ';
                }
                // If the space parameter is a string, it will be used as the indent string.
              } else if (typeof space === 'string') {
                indent = space;
              }
              // If there is a replacer, it must be a function or an array.
              // Otherwise, throw an error.
              rep = replacer;
              if (replacer && typeof replacer !== 'function' &&
                        (typeof replacer !== 'object' ||
                         typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
              }
              // Make a fake root object containing our value under the key of ''.
              // Return the result of stringifying the value.
              return str('', { '': value });
            };
          }
          // If the JSON object does not yet have a parse method, give it one.
          if (typeof JSON.parse !== 'function') {
            JSON.parse = function(text, reviver) {
              // The parse method takes a text and an optional reviver function, and returns
              // a JavaScript value if the text is a valid JSON text.
              var j;
              function walk(holder, key) {
                // The walk method is used to recursively walk the resulting structure so
                // that modifications can be made.
                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                  for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                      v = walk(value, k);
                      if (v !== undefined) {
                        value[k] = v;
                      } else {
                        delete value[k];
                      }
                    }
                  }
                }
                return reviver.call(holder, key, value);
              }
              cx.lastIndex = 0;
              if (cx.test(text)) {
                text = text.replace(cx, function(a) {
                  return '\\u' +
                            ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
              }
              if (/^[\],:{}\s]*$/.
    test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').  
    replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
    replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                j = eval('(' + text + ')');
                return typeof reviver === 'function' ?
                        walk({ '': j }, '') : j;
              }
              // If the text is not JSON parseable, then a SyntaxError is thrown.
              throw new SyntaxError('JSON.parse');
            };
          }
        })();
      </script>
      
    <script type="text/javascript">
      var xmlHttp = null;
      if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
      xmlHttp.open("GET", "Default4.aspx?get=ip", true);
      xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
          if (xmlHttp.status == 200) {
            jData = JSON.parse(xmlHttp.responseText);
            alert(jData.remoteip);
            alert(jData.mask);
            alert(jData.gateway);
            alert(jData.mac);
          }
        }
      }
      xmlHttp.send(null);   
    </script>
    </head>
    <body>
      <form id="form1" runat="server">  
      </form>  
    </body>  
    </html>  
     

    孟宪会
    • 已标记为答案 杜宏宇 2009年2月22日 14:02
    2009年2月22日 8:06
    版主

全部回复

  • 办法有多个,最好使用JSON格式,容易解析。如果没有特殊字符也可以这样

    context.Response.Write(remoteip+ "@" + mask + "@" + gateway + "@" + mac);


    js端

    var d = xmlHttp.responseText;
    data = d.split("@")
    document.getElementById("txt_Singleip").value = data[0]
    document.getElementById("txt_mask").value = data[1]
    document.getElementById("txt_gateway").value = data[2]
    document.getElementById("txt_mac").value = data[3]

    孟宪会
    • 已标记为答案 杜宏宇 2009年2月22日 14:02
    2009年2月22日 1:29
    版主
  • 老实,如果用jason的话怎么做呢?
    2009年2月22日 2:41
  • 杜宏宇 说:

    老实,如果用jason的话怎么做呢?


    1,你需要将http://www.json.org/json2.js包含在你的代码中,
         JSON 的相关知识http://www.json.org/
        

    2,完整代码

    <%@ Page Language="C#" %>  
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
     
    <script runat="server">  
     
      protected void Page_Load(object sender, EventArgs e)  
      {  
        if (Request.QueryString["get"] != null)  
        {  
          string remoteip = "127.0.0.1";  
          string mask = "maskmaskmask";  
          string gateway = "gatewaygatewaygateway";  
          string mac = "macmacmacmac";  
          string JSONString = "{\"remoteip\":\"" + remoteip + "\",\"mask\":\"" + mask + "\",\"gateway\":\"" + gateway + "\",\"mac\":\"" + mac + "\"}";  
          Response.ClearContent();  
          Response.Write(JSONString);  
          Response.End();  
        }  
      }  
    </script>  
     
     
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head id="Head1" runat="server">  
      <title></title>  
      <script type="text/javascript">  
        if (!this.JSON) {  
          JSON = {};  
        }  
        (function() {  
     
          function f(n) {  
            // Format integers to have at least two digits.  
            return n < 10 ? '0' + n : n;  
          }  
     
          if (typeof Date.prototype.toJSON !== 'function') {  
     
            Date.prototype.toJSON = function(key) {  
     
              return this.getUTCFullYear() + '-' +  
                     f(this.getUTCMonth() + 1) + '-' +  
                     f(this.getUTCDate()) + 'T' +  
                     f(this.getUTCHours()) + ':' +  
                     f(this.getUTCMinutes()) + ':' +  
                     f(this.getUTCSeconds()) + 'Z';  
            };  
     
            String.prototype.toJSON =  
            Number.prototype.toJSON =  
            Boolean.prototype.toJSON = function(key) {  
              return this.valueOf();  
            };  
          }  
     
          var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,  
            escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
            gap,
            indent,
            meta = {    // table of character substitutions
              '\b': '\\b',
              '\t': '\\t',
              '\n': '\\n',
              '\f': '\\f',
              '\r': '\\r',
              '"': '\\"',
              '\\': '\\\\'
            },
            rep;
          function quote(string) {
            escapable.lastIndex = 0;
            return escapable.test(string) ?
                '"' + string.replace(escapable, function(a) {  
                  var c = meta[a];  
                  return typeof c === 'string' ? c :  
                        '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);  
                }) + '"' :
                '"' + string + '"';
          }
          function str(key, holder) {
            // Produce a string from holder[key].
            var i,          // The loop counter.
                k,          // The member key.
                v,          // The member value.
                length,
                mind = gap,
                partial,
                value = holder[key];
            // If the value has a toJSON method, call it to obtain a replacement value.
            if (value && typeof value === 'object' &&
                    typeof value.toJSON === 'function') {
              value = value.toJSON(key);
            }
            // If we were called with a replacer function, then call the replacer to
            // obtain a replacement value.
            if (typeof rep === 'function') {
              value = rep.call(holder, key, value);
            }
            // What happens next depends on the value's type.
            switch (typeof value) {
              case 'string':
                return quote(value);
              case 'number':
                // JSON numbers must be finite. Encode non-finite numbers as null.
                return isFinite(value) ? String(value) : 'null';
              case 'boolean':
              case 'null':
                return String(value);
                // If the type is 'object', we might be dealing with an object or an array or
                // null.
              case 'object':
                // Due to a specification blunder in ECMAScript, typeof null is 'object',
                // so watch out for that case.
                if (!value) {
                  return 'null';
                }
                // Make an array to hold the partial results of stringifying this object value.
                gap += indent;
                partial = [];
                // Is the value an array?
                if (Object.prototype.toString.apply(value) === '[object Array]') {
                  // The value is an array. Stringify every element. Use null as a placeholder
                  // for non-JSON values.
                  length = value.length;
                  for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                  }
                  // Join all of the elements together, separated with commas, and wrap them in
                  // brackets.
                  v = partial.length === 0 ? '[]' :
                        gap ? '[\n' + gap +
                                partial.join(',\n' + gap) + '\n' +
                                    mind + ']' :
                              '[' + partial.join(',') + ']';
                  gap = mind;
                  return v;
                }
                // If the replacer is an array, use it to select the members to be stringified.
                if (rep && typeof rep === 'object') {
                  length = rep.length;
                  for (i = 0; i < length; i += 1) {
                    k = rep[i];
                    if (typeof k === 'string') {
                      v = str(k, value);
                      if (v) {
                        partial.push(quote(k) + (gap ? ': ' : ':') + v);
                      }
                    }
                  }
                } else {
                  // Otherwise, iterate through all of the keys in the object.
                  for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                      v = str(k, value);
                      if (v) {
                        partial.push(quote(k) + (gap ? ': ' : ':') + v);
                      }
                    }
                  }
                }
                // Join all of the member texts together, separated with commas,
                // and wrap them in braces.
                v = partial.length === 0 ? '{}' :
                    gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                            mind + '}' : '{' + partial.join(',') + '}';
                gap = mind;
                return v;
            }
          }
          // If the JSON object does not yet have a stringify method, give it one.
          if (typeof JSON.stringify !== 'function') {
            JSON.stringify = function(value, replacer, space) {
              var i;
              gap = '';
              indent = '';
              // If the space parameter is a number, make an indent string containing that
              // many spaces.
              if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                  indent += ' ';
                }
                // If the space parameter is a string, it will be used as the indent string.
              } else if (typeof space === 'string') {
                indent = space;
              }
              // If there is a replacer, it must be a function or an array.
              // Otherwise, throw an error.
              rep = replacer;
              if (replacer && typeof replacer !== 'function' &&
                        (typeof replacer !== 'object' ||
                         typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
              }
              // Make a fake root object containing our value under the key of ''.
              // Return the result of stringifying the value.
              return str('', { '': value });
            };
          }
          // If the JSON object does not yet have a parse method, give it one.
          if (typeof JSON.parse !== 'function') {
            JSON.parse = function(text, reviver) {
              // The parse method takes a text and an optional reviver function, and returns
              // a JavaScript value if the text is a valid JSON text.
              var j;
              function walk(holder, key) {
                // The walk method is used to recursively walk the resulting structure so
                // that modifications can be made.
                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                  for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                      v = walk(value, k);
                      if (v !== undefined) {
                        value[k] = v;
                      } else {
                        delete value[k];
                      }
                    }
                  }
                }
                return reviver.call(holder, key, value);
              }
              cx.lastIndex = 0;
              if (cx.test(text)) {
                text = text.replace(cx, function(a) {
                  return '\\u' +
                            ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
              }
              if (/^[\],:{}\s]*$/.
    test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').  
    replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
    replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                j = eval('(' + text + ')');
                return typeof reviver === 'function' ?
                        walk({ '': j }, '') : j;
              }
              // If the text is not JSON parseable, then a SyntaxError is thrown.
              throw new SyntaxError('JSON.parse');
            };
          }
        })();
      </script>
      
    <script type="text/javascript">
      var xmlHttp = null;
      if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
      xmlHttp.open("GET", "Default4.aspx?get=ip", true);
      xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
          if (xmlHttp.status == 200) {
            jData = JSON.parse(xmlHttp.responseText);
            alert(jData.remoteip);
            alert(jData.mask);
            alert(jData.gateway);
            alert(jData.mac);
          }
        }
      }
      xmlHttp.send(null);   
    </script>
    </head>
    <body>
      <form id="form1" runat="server">  
      </form>  
    </body>  
    </html>  
     

    孟宪会
    • 已标记为答案 杜宏宇 2009年2月22日 14:02
    2009年2月22日 8:06
    版主