Jquery 将json字符串转换为object并返回$。post work$。ajax不起作用
我刚刚了解到js中的数组不能包含key to value,所以我正在寻找将数组从js传递到php并返回的选项。当我搜索相关信息时,我找到了json选项。 但我发现js不完全支持,除非在我的例子json2.js中添加插件。 我有两个不同的代码,Jquery 将json字符串转换为object并返回$。post work$。ajax不起作用,jquery,ajax,arrays,json,Jquery,Ajax,Arrays,Json,我刚刚了解到js中的数组不能包含key to value,所以我正在寻找将数组从js传递到php并返回的选项。当我搜索相关信息时,我找到了json选项。 但我发现js不完全支持,除非在我的例子json2.js中添加插件。 我有两个不同的代码,$。post工作正常,$。ajax不工作。 如果您能告诉我为什么$,我会很高兴。ajax不起作用,您有完整的代码可以测试。 json2.js来自.thx $.ajax代码: $.ajax({ type: "POST",
$。post
工作正常,$。ajax
不工作。
如果您能告诉我为什么$,我会很高兴。ajax
不起作用,您有完整的代码可以测试。
json2.js来自.thx
$.ajax
代码:
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "phpfile.php",
data: "{ data : dataString }",
dataType: "json",
success: function (res) {
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
},
error: alert ('there was problem with ajax');
});
$.post('phpfile.php', {data: dataString}, function(res){
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
});
*$。post
代码:
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "phpfile.php",
data: "{ data : dataString }",
dataType: "json",
success: function (res) {
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
},
error: alert ('there was problem with ajax');
});
$.post('phpfile.php', {data: dataString}, function(res){
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
});
html代码:
<html>
<head>
<title>Json Test</title>
<SCRIPT src="jquery-1.7.2.min.js"></SCRIPT>
<SCRIPT src="json2.js"></SCRIPT>
<script>
$(document).ready(function(){
var data = new Object();
data.hello = "Hello";
data.world = 'World';
data.worked = " it worked ";
data.somebool = true;
data.array = new Array("he\"ll\"o", '"World"');
alert (data.hello);
var dataString = JSON.stringify(data);
alert(dataString);
$.post('phpfile.php', {data: dataString}, function(res){
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
});
});
</script>
</head>
<body>
<div id="result"></div>
</body>
</html>
Json测试
$(文档).ready(函数(){
var data=新对象();
data.hello=“hello”;
data.world='world';
data.worked=“it worked”;
data.somebool=true;
data.array=新数组(“he\'ll\'o','World');
警报(data.hello);
var-dataString=JSON.stringify(数据);
警报(数据串);
$.post('phpfile.php',{data:dataString},函数(res){
警惕(“成功”);
var obj=jQuery.parseJSON(res);
if(obj.somebool==true)
$(“#result”).html(obj.hello+''+obj.array[1]+obj.worked+”。来自PHP的消息:“+obj.PHP_消息);
});
});
php代码:
<?php
$res = json_decode($_REQUEST['data'], true);
$res["php_message"] = "I am PHP";
echo json_encode($res);
?>
在您的$.ajax()请求中,您已经设置了数据类型:“json”
,这意味着响应将已经是一个json对象,而不是一个表示json的字符串。因此,调用var obj=jQuery.parseJSON(res)回调函数中的code>实际上对您没有任何帮助。直接使用res
等效的$.post()
函数调用将把可选的数据类型
参数传递给函数,如下所示:
$.post('phpfile.php', {data: dataString}, function(res){
alert('sucsses');
var obj = jQuery.parseJSON(res);
if(obj.somebool === true)
$("#result").html(obj.hello + ' ' + obj.array[1] + obj.worked + ". Message from PHP: "+obj.php_message);
}, 'json');
另一件事是您正在发送:
data: "{ data : dataString }",
这只是一个字符串,但不是有效的JSON。dataString
部分只是一些字符串,它们不引用任何内容。你可能是说:
data: { data : dataString },
这是一个真正的对象,它确实引用了dataString
,并且该对象被转换为JSON。如果您有jQuery,则不需要json2库-正如您所展示的那样,有jQuery.parseJSON
。您在哪个浏览器中测试了此代码?因为JSON全局对象在某些浏览器中不可用。这就是为什么需要json2.js。