2013-12-17 20 views
6

Mam jedno pole tekstowe. Posyłam wartość pola tekstowegoDane wysyłane zmienione po otrzymaniu

<textarea class="php" name="codeguru"></textarea></div> 
<div class="hint">This code is editable. Click Run to execute.</div> 
<input type="submit" value="Run" /> 

przez $ metody ajax

$.ajax({ 
    type: 'GET', 
    url: 'exec.php', 
    dataType: 'JSONP', 
    data: { 
     code: code 
    }, 
    success: function (data) {}, 
    jsonpCallback: 'mycallback', 
    error: function (xhr, ajaxOptions, thrownError, err, textStatus) { 

    } 
}); 

Problem: Kiedy jestem wysłać dane jak echo 'Sanjay'; to jest konwertowane na echo \ 'sanjay'.

Mam to samo zaimplementowałem na localhost i na cpanelu. Działa to dobrze na lokalnym hoście, ale nie jest idealnie na cpanelu. Wszelkie sugestie i pomysły zostaną docenione.

+1

Czy masz 'magic_quotes_gpc' aktywowany w Twojej' php.ini'? http://www.php.net/magic_quotes – SamV

+0

try var_dump (get_magic_quotes_gpc()), jeśli masz, to magic_quotes_gpc jest problemem. – Andrew

+0

'magic_quotes_gpc' jest usuwany z php 5.4.0, więc jeśli powyżej tego nie ma potrzeby sprawdzania. Źródło: http://www.php.net/magic_quotes –

Odpowiedz

0

Powinieneś zakodować URL przed AJAX i dekodować po stronie serwera. Dzieje się dużo, aby mnie z poszczególnych znaków w ciągi JSON, zwykle URL zakodować go:

Znaczenie:

$.ajax({ 
    type: 'GET', 
    url: 'exec.php', 
    dataType: 'JSONP', 
    data: { 
     code: encodeURIComponent(code) 
    }, 
    success: function (data) {}, 
    jsonpCallback: 'mycallback', 
    error: function (xhr, ajaxOptions, thrownError, err, textStatus) { 

    } 
}); 

A po stronie serwera:

$code = urldecode($_POST['code']); // or rwaurldecode, not sure 

spróbuj wysłać kod z / i " i zobacz, jak zareaguje, ponieważ miałem też problemy z tymi, jeśli próbuję dodawać ukośniki do cudzysłowów itp. Używam poniższej funkcji, ale możesz ją zmodyfikować zgodnie ze swoimi potrzebami:

function addslashes(str) { 
    return (str + '').replace(/[\\"]/g, '\\$&').replace(/\u0000/g, '\\0'); 
} 
+0

Próbowałem twój kod, ale nie działa. Jeśli muszę zmienić kod po otrzymaniu, to co mam, tak jak otrzymuję ten kod echo \ 'sanjay' teraz chcę zmienić na echo "sanjay", więc co powinienem zrobić? –

+0

Nie powinieneś otrzymywać echo \ 'sanjay', jeśli kodujesz je przed wysłaniem i sprawdzasz magiczne cytaty. –

3

Dostałem odpowiedź

$code = stripslashes($code); 

powodu tego kodu jestem w stanie usunąć blackslashes

Powiązane problemy