I want to retrieve data from database as a single row of string separated with '|' for which i am using json
/ajax
/WebMethod
我想从数据库中检索数据,作为用'|'分隔的单行字符串我正在使用json / ajax / WebMethod
JS
var request = {
RefNo: $('#txtRefNo').val()
};
var strRequest = JSON.stringify(request);
$('#divDialog').html('<div>Retrieving Information...</div>').dialog({ title: 'Please Wait...', modal: true, resizable: false, draggable: false });
$.ajax({
url: 'ajaxExecute.aspx/GETCUST',
data: strRequest,
dataType: "text",
contentType: "application/json",
cache: false,
context: document.body,
type: 'POST',
error: function (xhr) {
alert(xhr.responseText);
},
success: function (response) {
alert(response);
}
});
C#
[WebMethod]
public static void GETCUST(string RefNo)
{
try
{
DataTable dtOutput = new DataTable();
dtOutput = Generix.getData("dbo.customers", "[first_name],[middle_name]", "reference_no='" + RefNo + "'", "", "", 1);
if (dtOutput.Rows.Count > 0)
{
HttpContext.Current.Response.Write(dtOutput.Rows[0][0].ToString() + "|" + dtOutput.Rows[0][1].ToString());
}
}
catch (Exception xObj)
{
HttpContext.Current.Response.Write("ERROR: " + xObj.Message);
}
}
I am getting output with {"d":null}
in it. How to remove it from response ? or am i doing something wrong in code
我在其中输出{“d”:null}。如何从响应中删除它?或者我在代码中做错了什么
Output:
JAMES|BOND{"d":null}
1 个解决方案
#1
6
You are getting {"d":null}
because your WebMethod
has no return value, you are just writing to the Response object.
你得到{“d”:null},因为你的WebMethod没有返回值,你只是写入Response对象。
You should return a string
from your method :
你应该从你的方法返回一个字符串:
[WebMethod]
public static string GETCUST(string RefNo) {
try {
DataTable dtOutput = new DataTable();
dtOutput = Generix.getData("dbo.customers", "[first_name],[middle_name]", "reference_no='" + RefNo + "'", "", "", 1);
if (dtOutput.Rows.Count > 0) {
return dtOutput.Rows[0][0].ToString() + "|" + dtOutput.Rows[0][1].ToString();
}
} catch (Exception xObj) {
return "ERROR: " + xObj.Message;
}
}
And then the returned object will be {"d":"JAMES|BOND"}
, which can be accessed via response.d
in your javascript.
然后返回的对象将是{“d”:“JAMES | BOND”},可以通过javascript中的response.d访问。
$.ajax({
url: 'ajaxExecute.aspx/GETCUST',
data: strRequest,
dataType: 'JSON', // Changed dataType to be JSON so the response is automatically parsed.
contentType: "application/json",
cache: false,
context: document.body,
type: 'POST',
error: function (xhr) {
alert(xhr.responseText);
},
success: function (response) {
alert(response.d); // Should correctly alert JAMES|BOND
}
});
Please note that in the Javascript I have changed the dataType
of the Ajax response to be JSON
so that the response is parsed.
请注意,在Javascript中,我已将Ajax响应的dataType更改为JSON,以便解析响应。
#1
6
You are getting {"d":null}
because your WebMethod
has no return value, you are just writing to the Response object.
你得到{“d”:null},因为你的WebMethod没有返回值,你只是写入Response对象。
You should return a string
from your method :
你应该从你的方法返回一个字符串:
[WebMethod]
public static string GETCUST(string RefNo) {
try {
DataTable dtOutput = new DataTable();
dtOutput = Generix.getData("dbo.customers", "[first_name],[middle_name]", "reference_no='" + RefNo + "'", "", "", 1);
if (dtOutput.Rows.Count > 0) {
return dtOutput.Rows[0][0].ToString() + "|" + dtOutput.Rows[0][1].ToString();
}
} catch (Exception xObj) {
return "ERROR: " + xObj.Message;
}
}
And then the returned object will be {"d":"JAMES|BOND"}
, which can be accessed via response.d
in your javascript.
然后返回的对象将是{“d”:“JAMES | BOND”},可以通过javascript中的response.d访问。
$.ajax({
url: 'ajaxExecute.aspx/GETCUST',
data: strRequest,
dataType: 'JSON', // Changed dataType to be JSON so the response is automatically parsed.
contentType: "application/json",
cache: false,
context: document.body,
type: 'POST',
error: function (xhr) {
alert(xhr.responseText);
},
success: function (response) {
alert(response.d); // Should correctly alert JAMES|BOND
}
});
Please note that in the Javascript I have changed the dataType
of the Ajax response to be JSON
so that the response is parsed.
请注意,在Javascript中,我已将Ajax响应的dataType更改为JSON,以便解析响应。