2013-12-17 19 views
6

Tôi có một vùng văn bản. Tôi gửi giá trị của vùng văn bảnGửi dữ liệu đã thay đổi khi nhận được

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

thông qua phương pháp ajax $

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

    } 
}); 

Vấn đề: Khi tôi gửi một dữ liệu như echo 'Sanjay'; nó được chuyển thành echo \ 'sanjay'.

Tôi đã triển khai nó trên máy chủ cục bộ và trên cPanel. Điều này hoạt động tốt trên localhost nhưng không hoàn hảo trên cPanel. Bất kỳ đề xuất hoặc ý tưởng sẽ được đánh giá cao.

+1

Bạn có 'magic_quotes_gpc' kích hoạt trong' php.ini' của bạn? http://www.php.net/magic_quotes – SamV

+0

thử var_dump (get_magic_quotes_gpc()), nếu bạn có ture, thì magic_quotes_gpc là vấn đề. – Andrew

+0

'magic_quotes_gpc' bị xóa khỏi php 5.4.0, vì vậy nếu bạn ở trên mà không cần phải kiểm tra. Nguồn: http://www.php.net/magic_quotes –

Trả lời

0

Bạn nên mã hóa URL trước AJAX và giải mã phía máy chủ. Điều này xảy ra rất nhiều với tôi với ký tự đặc biệt trong chuỗi JSON, tôi mã hóa thường URL nó:

Ý nghĩa:

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

    } 
}); 

Và trong phía máy chủ:

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

Hãy thử gửi mã với /" và xem nó phản hồi như thế nào, bởi vì tôi cũng gặp vấn đề với nó, nếu nó cố thêm dấu gạch chéo vào dấu ngoặc kép, v.v. Tôi sử dụng hàm sau, nhưng bạn có thể sửa đổi nó cho phù hợp với nhu cầu của bạn:

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

tôi đã thử mã của bạn nhưng không hoạt động. Nếu tôi phải thay đổi mã của tôi sau khi nhận được thì những gì tôi có tod như tôi đang nhận mã này echo \ 'sanjay' bây giờ tôi muốn thay đổi để echo 'sanjay' vì vậy những gì tôi nên làm gì? –

+0

Bạn không nên nhận echo \ 'sanjay', nếu bạn mã hóa nó trước khi gửi và kiểm tra các dấu ngoặc kép. –

3

tôi có câu trả lời của tôi

$code = stripslashes($code); 

Bởi vì mã này tôi có thể loại bỏ blackslashes

Các vấn đề liên quan