假设我有两种方法action1
和action2
:
措施1:
public JavaScriptSerializer action1()
{
var student = new Student() { First = "john", Last = "doe" };
JavaScriptSerializer jsonStudent = new JavaScriptSerializer();
jsonStudent.Serialize(student);
return jsonStudent;
}
措施2:
public void action2()
{
var student = new Student() { First = "john", Last = "doe" };
JavaScriptSerializer jsonStudent = new JavaScriptSerializer();
jsonStudent.Serialize(student);
Response.Write(jsonStudent);
}
假设我的观点有Ajax
这样的调用:
<script>
$(function () {
$.ajax({
url: 'AjaxCallsTest/action1',
dataType: 'json',
success: function (response) {
//code here
},
error: function (response, status, xhr) {
//code here
}
})
})
</script>
在这两种情况下,一个写入Response
对象,另一个写入return
语句。我的问题即使存在return
,它是否实际上将jsonStudent
对象添加到Response
对象中,如果这样,使用return
语句编写操作方法毫无意义?
感谢。
答案 0 :(得分:1)
Response.Write()
实际上向客户端写了一些东西(aspx文档)。它就像PHP的echo
一样 - 它只是打印到响应。
return
只返回一个值给调用函数。因此,如果您希望打印它(如action2()
),则必须打印结果。
基本上,您可以使用以下每种功能打印JavaScriptSerializer
:
<强>措施1 强>
JavaScriptSerializer a = action1();
Response.Write(a);
<强>措施2 强>
action2();
因此,您的问题的答案是,如果您以后不需要代码中的JavaScriptSerializer
对象,则return
是不必要的。但如果您稍后将使用该对象,则最好将其返回并存储。