# JavaScript replace funktion



## FabianLurz (22. Mai 2014)

Hallo Leute,
ich möchte in einem Text spezielle Stellen herausfiltern und umwandeln (grobe Übersicht).

Im Detail:

- Ein String kommt in die Funktion internalLinking(text,type) (type an dieser Stelle unwichtig)
- Diesen String möchte ich bspw. nach @(c_152)@ durchsuchen
- Das gefunden würde ich gerne durch bspw. @Testartikel ersetzen -> Der Ersatzstring soll von der API kommen (per Ajax)


```
function internalLinking(text, type) {
    //Types - PositionNumber
    //Description - 0
    //Images - 1
    //Video - 2
    //Places - 3
    //Dates - 4
    //Links - 5

    return text.replace(/\@(.+?)\@/g, function(str, p1, p2) {
        //return test()
        var theName = "";
        $.ajax({
            type: "GET",
            async: false,
            url: path.apiPath + 'item.internalLinkCheck/' + p1.toString().replace(/\(/g, "").replace(/\)/g, "") + '?token=' + token + '&callback=?',
            dataType: "jsonp",
            success: function(response) {
                theName = response.name;
                createLink();
            }
        });
        function createLink() {
            var user = 0;
            try {
                user = parseInt(p1.split("u_")[1]);
            } catch (e) {

            }
            var item = 0;
            try {
                item = parseInt(p1.split("c_")[1]);
            } catch (e) {

            }

            if (isNaN(user) == false) {
                return("<a class=\"internalLinkUser\" data-position=\"" + type + "\" data-id=\"" + user + "\">@" + theName + "</a>");
            }
            if (isNaN(item) == false) {
                return("<a class=\"internalLinkItem\" data-position=\"" + type + "\" data-id=\"" + item + "\">@" + theName + "</a>");
            }
        }

    });
}
```
Das Problem ist nun, dass return in der Funktion createLink() nicht an der richtigen Stelle sitzt. Es müsste außerhalb der Funktion createLink() sitzen damit es funktioniert.
Ich habe auch schon $.Deferred probiert mit resolve() und promise() - das hat alles nichts genützt. 
Ich wäre froh, wenn ihr mir helfen könntet 
Viele Grüße
Fabian


----------



## Bananabert (28. Mai 2014)

Moin,

nicht ganz sicher was du willst, oder wo eine Frage ist.

Aber lager mal deinen ajax request in eine Funktion aus, sowie dein createLink().

```
var ajaxReturnData = ajaxRequest();
return createLink(ajaxReturnData);
```


----------

