我在php中创建了一个大型数据结构,我将其发送回jQuery“post”请求。 数据以下列格式到达
"{\"event\":{\"id\":\"5\",\"title\":\"Test Event\",\"event_ref\":\"TEST\",\"approval\":\"na\",\
数据以双引号字符串的形式发回,双引号已转义。 url目录标记也会被转义。 以上只是返回的字符串的一小部分。
通常,我不能使用点表示法或数组表示法来访问数据。 我怀疑我需要摆脱外部封闭的双引号并取消它。 数据是一个数组,一些项是简单的值,一些是对象,一些是对象数组。
如何访问返回的数据? 虽然有些对象经常丢失,但结构总是相同的。
js代码是:
// The login button
$("#loginButton").click( function(){
var username = $('input#login-username').val();
var password = $('input#login-passwd').val();
alert("Login button clicked with username/password: "+username+" / "+password);
$.post(
$_interface,
{ option: 'login', userID: username, pwd: password },
function(response){
if (response) {
// alert("Response = true");
$.post(
$_interface,
{ option: 'superGlobalValues', target: 'session' },
function(data){
alert(data);
}
);
} else {
alert("Response = false");
}
}
);
}
);
答案 0 :(得分:0)
jquery上.post函数的结构是:
jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
在这种情况下,您正在使用url,data和success函数,理论上jquery应该已经知道答案是json答案并评估对象的答案,但只是为了确保将代码更改为添加json数据类型:
$.post(
$_interface,
{ option: 'login', userID: username, pwd: password },
function(response){
if (response) {
// alert("Response = true");
$.post(
$_interface,
{ option: 'superGlobalValues', target: 'session' },
function(data){
alert(data);
}
);
} else {
alert("Response = false");
}
}, "json"
);
如果这不起作用,只需评估答案,而不是做
function(data) {
alert(data);
}
做类似
的事情function(data) {
my_json = eval(data);
alert(my_json);
end
答案 1 :(得分:0)
您也可以写下.htaccess:
php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0
您可以对所请求的数据使用php function stripslashes($ string)。
答案 2 :(得分:-1)
jQuery ajax对象有param dataType,可以设置为JSON,您将获得正确的解析响应作为对象。 例如:
$.ajax({
type: 'POST',
url: url,
data: data,
success: function(data){ //data contains parsed response, try to console.log this },
dataType: 'json'
});
答案 3 :(得分:-1)
Vadim是对的,或者使用var myObj = JSON.parse(data)。