收到时发送的数据发生了变化

时间:2013-12-17 10:50:52

标签: javascript php jquery

我有一个textarea。我发送文本区域的值

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

通过$ ajax方法

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

    }
});

问题:当我发送echo'sanjay'这样的数据时; 它被转换为echo \'sanjay'。

我在localhost和cpanel上实现了它。这在localhost上工作正常但在cpanel上不完美。任何建议或想法将不胜感激。

2 个答案:

答案 0 :(得分:3)

我得到了答案

$code = stripslashes($code);

由于此代码,我可以删除黑条

答案 1 :(得分:0)

您应该在AJAX之前对其进行URL编码并对服务器端进行解码。 对于我来说,JSON字符串中的特定字符会发生这种情况,我通常会对其进行URL编码:

意义:

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

    }
});

在服务器端:

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

尝试使用/"发送代码,看看它是如何响应的,因为我也遇到了问题,如果它确实尝试在引号中添加斜杠等等。我使用以下函数,但你可以修改它以满足你的需要:

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