开发者

Use JavaScript to stripslashes ? possible

I'm using ajax to grab a URL. The problem is the URL has slashes in it and when the JQuery load takes place afterwords it will not load the page.

AJAX success bit:

success: function(data) {
 $('#OPTcontentpanel').load(data.OPTpermalink);

PHP

echo 开发者_运维问答json_encode( array('OPTpermalink'=>$OPTpermalink,));

AND the response

http:\/\/www.divethegap.com\/update\/options\/padi-open-water\/

So need to strip the slashes. I know how to do it in PHP but not in AJAX JavaScript.

Any ideas?

Marvellous


A new answer to an old question:

String.prototype.stripSlashes = function(){
    return this.replace(/\\(.)/mg, "$1");
}

Example of use:

var str = "You\'re slashed \/\\..\/\\"; // Text from server
str = str.stripSlashes() ;

output:

You're slashed /\../\


This is an old post but thought I would add my answer, seems more efficient than some other answers here:

var url = "http:\/\/www.divethegap.com\/update\/options\/padi-open-water\/"

var res = url.replace(new RegExp("\\\\", "g"), "");

This will replace all occurrences of a backslash character with nothing.


There has been a good port of many of php's core functions, including stripslashes over here: http://phpjs.org/functions/stripslashes/

function stripslashes (str) {
  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Ates Goral (http://magnetiq.com)
  // +      fixed by: Mick@el
  // +   improved by: marrtins
  // +   bugfixed by: Onno Marsman
  // +   improved by: rezna
  // +   input by: Rick Waldron
  // +   reimplemented by: Brett Zamir (http://brett-zamir.me)
  // +   input by: Brant Messenger (http://www.brantmessenger.com/)
  // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
  // *     example 1: stripslashes('Kevin\'s code');
  // *     returns 1: "Kevin's code"
  // *     example 2: stripslashes('Kevin\\\'s code');
  // *     returns 2: "Kevin\'s code"
  return (str + '').replace(/\\(.?)/g, function (s, n1) {
    switch (n1) {
    case '\\':
      return '\\';
    case '0':
      return '\u0000';
    case '':
      return '';
    default:
      return n1;
    }
  });
}


You're sending JSON, but inserting it directly into a HTML element. That is not wise, can create broken results, and probably not what you want to do in the first place.

You should probably either

  • change the PHP script's output to create proper HTML

  • expect JSON on the JavaScript side (using jQuery's dataType parameter, or the shorthand $.json(), and parse that


Have you tried string.replace?

success: function(data) {
 $('#OPTcontentpanel').load(data.OPTpermalink.replace("\\", ""));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜