我连接到远程数据库,我从数据库中获取了一些统计数据。所以我决定创建一个Web服务并通过它获得所需的数据。数据库服务器是Windows上的SQL Server,我需要在我的PHP网页中显示数据。
首先,我编写了返回类似
的字符串的Web服务"[
{
"name" : "John",
"Age":"54"
},
{
"name":"Jack",
"Age":"33"
}
]"
我使用PHP的file_get_contents()方法得到了这个字符串。
$json = file_get_contents('http://myurl.org/services.asmx/namelistJson');
但是在开始时有一些不需要的标签返回
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://myurl.org/services.asmx?op=namelistJson">
在最后
</string>
我用
清理它们$json = strip_tags(file_get_contents('http://myurl.org/services.asmx/namelistJson'));
现在我有一个json字符串。
我想将这个字符串用作javascript用于javascript以创建表。
<?php
$json = strip_tags(file_get_contents('http://myurl.org/services.asmx/namelistJson'));
?>
<script>
var response = $.parse(<?php echo $json; ?>);
$.each(response, function(i, item) {
$('<tr>')
.html("<td>" + response[i].name + "</td>"
+ "<td>" + response[i].Age + "</td>"
)
.appendTo('#nameList');
});
</script>
?>
<table id="nameList" class="table">
</table>
我收到有关遗失]
符号的错误消息。 FireBug说
在元素列表之后SyntaxError:missing]
如何正确地将字符串转换为json以便在javascript上使用它?
修改
如果我修改了这行
var response = $.parse(<?php echo $json; ?>);
到
var response = <?php echo $json; ?>;
我仍然遇到]
错误。
HTML输出如下:
<script>
...
var response = [{"name" : "John", "Age" : "14"}, {"name" : "40"}, ... ];
...
</script>
答案 0 :(得分:1)
无需创建字符串然后再将其转换为json对象,您可以直接从webservice发送json对象并直接在脚本(jquery)中使用它,如下所示:
以下是我的网络服务中的代码
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public static object GetGridData()
{
DataTable dt = GetRecords(); // Fetch the data from sql in form of a datatable
var returnData = from row in dt.AsEnumerable()
select new
{
Id = row["Id"] // Here the Id in row["Id"] specifies the column in database
name = row["name"],
age = row["age"]
};
return returnData;
}
要在jquery中将其作为对象访问,请使用以下代码:
$.ajax({
url: 'url of webservice along with method',
dataType: 'json',
contentType: 'application/json; charset=utf-8;',
tyep: 'GET',
success: function (datas) {
var data = datas.d;
$.each(data, function (index, value) {
$('<tr>').html("<td>" + value.name + "</td>"+ "<td>" + value.Age + "</td>"
).appendTo('#nameList');
});
},
error: function (error) {
alert('error occured');
}
});
但如果您真的想使用字符串发送它并将其解析为json,那么您可以使用
var jsonObject = JSON.parse(jsonstring);
或者你可以通过粘贴jsonlint.com中的json字符串来验证你的json字符串是否有效
希望这会有所帮助:)