I am having problem while passing json data to the source of autocomplete multiselect jquery
this is the jason data which i am sending
[ "abhinav#sdv.com","nishimura#dscs.com","alex#sds.com","alice#sdvs.com","amit#sds.com"]
autocomplete: {
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/CommanService.asmx/ExtractEmail",
data: {},
dataType: "json",
success: function (data) {
var vServiceData = eval(data);
// alert(data.d[0].data123);
//return eval('[' + data.d + ']');
//response(vServiceData);
// alert(data);
response(data);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(xhr.responseText);
alert(thrownError);
}
})
}
in this source of ajax but the problem here is that istead of getting these record in
diffrent string the output is in the form of single string but when i pass static data like
source=["Red","blue","green"]
MY webservice code is
#region(EXTRACT EMAIL)
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string ExtractEmail()
{
//Webservice is used to extract the employee data
VisualLibrarySoapClient oVisualLibrary = new VisualLibrarySoapClient();
string data = oVisualLibrary.EmployeeSelectData();
DataSet ds = new DataSet();
ds = GetDataSet(data);
//Used data columns to extract email from data set
DataColumn ColEmail = ds.Tables[0].Columns["Email"];
//all emails are stored in a linst Mail
List<string> Mail = new List<string>();
foreach (DataRow row in ds.Tables[0].Rows)
{
String MailData = row[ColEmail].ToString();
Mail.Add(MailData);
}
//Json serializer is used to convert the list data into jason format
//System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
// string a = JsonConvert.SerializeObject(Mail);
string ss = JsonConvert.SerializeObject(Mail, Formatting.Indented);
string d = ss.Substring(1, ss.Length - 1).ToString();
return ss;
//System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
//return serializer.Serialize(Mail);
}
#endregion
directly in the source then the output is right i am getting this three words diffrently in autocomplete textbox suggestions plzz help thanx in advance
Related
I am getting some string data along with files & i can access file like this Request.Files[0] but question is how can i access value of string objects? I am already trying to access it like this: Request.Form["url"] but seems not returns appropriate data. Please tell me how can i access Request.Form["url"] in a proper way.
Jquery Payload:
//FormData
var formData = new FormData();
$(".wholeBar").each(function (key, value) {
var findFiles = $(this).find(".hpicFile"); //find the element
var file = findFiles[0].files[0]; //get the actual file object
formData.append('files[]', file); //append all files to formData
// console.log(value);
var urlInput = $(this).find(".hurl");
formData.set("url", urlInput);
console.log(urlInput.val());
});
//Ajax request
$.ajax({
url: "/Controller/Upload",
type: "POST",
processData: false,
contentType: false,
data: formData, //Send form Data
success: function (response) {
console.log(response)
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
C#:
var ddd = Request.Files[0];
var fff = Request.Form["url"];
//foreach (var item in fff)
//{
// var aaa = item.ToString();
//}
return Json("ok");
You can set string Data in below format in Jquery
var formData = new FormData();
var obj = {
Username: "user5",
Email: "em#example.com"
};
formData.set("data", obj);
and Receive it on Controller side as below format
VB.Net
Dim objUser As cls_User = JsonConvert.DeserializeObject(Of cls_User )(Request("obj"))
C#
cls_User objUser = JsonConvert.DeserializeObject<cls_User>(Request("obj"));
You need to create a class to capture the data coming from FormData() and then use the same object to retrieve it from (Request("obj") to Dim objUser As cls_User
I'm trying to use AJAX and calling web method like this in my code.
function generate_source(year_source, month_source) {
var gData_source = '';
if (year_source) {
gData_source = [];
gData_source[0] = year_source;
gData_source[1] = month_source;
console.log('first part');
}
else {
var d_source = new Date();
gData_source = [];
gData_source[0] = d_source.getFullYear();
gData_source[1] = d_source.getMonth() + 1;
console.log('second part');
}
var jsonData_source = JSON.stringify({
gData_source: gData_source
});
var ctx = document.getElementById("order_source").getContext('2d');
$.ajax({
url: "dashboard.aspx/getordersource",
data: jsonData_source,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function () {
$("#loader_divsource").show();
},
success: function (response) {
$("#loader_divsource").hide();
var chartLabel = eval(response.d[0]); //Labels
var chartData = eval(response.d[1]); //Data
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: chartLabel,
datasets: [
{
type: 'doughnut',
label: chartLabel,
data: chartData,
backgroundColor: [
"#FF6384",
"#36A2EB",
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB",
]
}
]
}
});
}
});
}
var d_source = new Date();
gData_source = [];
$('#year_source').val(d.getFullYear());
$('#month_source').val(d.getMonth() + 1);
generate_source('', '');
My web method is like this;
[System.Web.Services.WebMethod]
public static List<string> getordersource(List<int> gData)
{
DataSet ds = ws_db.get_Dataset_order_source();
var returnData = new List<string>();
......
return returnData;
}
Whenever I try to run this data, my breakpoint for the web method is not hit. Further, if i use the same method without data, i don't get this error. It's driving me crazy.
I think your problem is in this code :
var jsonData_source = JSON.stringify({
gData_source: gData_source
});
you are trying to serialize array with key value pair that it is become invalid.
change to this :
var jsonData_source = JSON.stringify(gData_source);
also your web method should be like this :
[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.JSON)]
// just return a string, not list, your JSON string should have contain all your enumerable in your string Data
public static string getordersource(List<int> gData)
{
DataSet ds = ws_db.get_Dataset_order_source();
JsonSerializer serializer = new JsonSerializer();
var returnData = serializer.serialize(ds);
......
return returnData;
}
Hope it helps.
I am trying to loop through the JSON object and create an input type dynamically in a div
here is the Jquery function
$(document).ready(function (){
$.ajax({
type: "POST",
url: "Tables.aspx/TotaTable",
contentType: "application/json; charset=utf-8",
dataType:'JSON',
success: function(data) {
//var data= $.parseJSON(data);
$.each(data,function(index,jsonobj)
{
alert(jsonobj.OTID);
}
);
}
});
});
Here is the server side code that return the JSON values
I am using json.net framework to convert my datatable to JSON
[System.Web.Services.WebMethod(EnableSession=true)]
public static string TotaTable()
{
LoginData lData = (LoginData)HttpContext.Current.Session["LData"];
ClsDataAccess cData = new ClsDataAccess();
DataTable dt = cData.GetTable("Select otid,ottableno from FBOUTLETTABLES where otoutletid=1");
string val=JsonConvert.SerializeObject(dt).ToString();
return val;
}
here is the JSON value that is sent to the client side
[{"OTID":76.0,"OTTABLENO":222.0},{"OTID":3.0,"OTTABLENO":3.0},{"OTID":4.0,"OTTABLENO":4.0},{"OTID":5.0,"OTTABLENO":5.0},{"OTID":6.0,"OTTABLENO":6.0},{"OTID":7.0,"OTTABLENO":7.0},{"OTID":8.0,"OTTABLENO":8.0},{"OTID":9.0,"OTTABLENO":9.0},{"OTID":2.0,"OTTABLENO":2.0},{"OTID":1.0,"OTTABLENO":1.0}]
My problem is
alert(jsonobj.OTID);
shows 'undefined'
I did try changing the server side function to return a List
like
public static List<Tables> Tables()
{
List<Tables> myList=new List<Tables>();
//Code to get datas from the database
foreach(DataRow row in dt.Rows)
{
myList.Add(new Tables{
tabID=row["tabID"].ToString();
tables=row["tab"].ToString();
});
}
return myList;
}
but I am facing the same issue..
Finally Got It working
Here is the Jquery Code
var obj={};
obj.ID=id;
$.ajax({
type:"POST",
url:"Tables.aspx/ItemsFromCategory",
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType:'json'
}).done(function(res) {
var resultAsJson = res.d;
$.each(resultAsJson, function (index, resObject) {
alert(resObject.ID);
});
}
});
I did also change the server side code to this
public static List<ItemClass> ItemsFromCategory(string ID)
{
LoginData lData = (LoginData)HttpContext.Current.Session["LData"];
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
List<ItemClass> myList = new List<ItemClass>();
if (lData != null)
{
ClsDataAccess cData = new ClsDataAccess();
DataTable dt = cData.GetTable("Select itmid,ITMNAME from FBITEMDETAILS where itmtype='I' and itmisprimary='N' and itmoutletid=" + lData.fbOutLetid + " and itmgrpid=" + ID);
// DataTable dt = cData.GetTable("Select itmid,ITMNAME from FBITEMDETAILS where itmtype='I' and itmisprimary='N' and itmgrpid=" + ID);
foreach (DataRow row in dt.Rows)
{
myList.Add(new ItemClass
{
ID = row["itmid"].ToString(),
itemName=row["ITMNAME"].ToString(),
});
}
// result = ser.Serialize(myList);
// return result;
return myList;
}
// return string.Empty;
return myList;
}
i am working in MVC 4 application. i am trying to bind the json data to table in view that reflects as a table view in the View Page.
here is my controller code....
if (reportType == "Report")
{
result = client.GetApiRequest("api/TurnoverReport/get?packageID=" + Convert.ToInt32(packageID)).Result;
}
here in result is a datatable that holds the output data as a datatable.
to pass the table to View i am serializing the table as :
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row = new Dictionary<string, object>();
row.Add("text", result);
rows.Add(row);
var test = JsonConvert.SerializeObject(rows, Formatting.Indented,
new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});
return Json(serializer.Serialize(test), JsonRequestBehavior.AllowGet);
here I'm using the jsonconvert because of i am having this error message like
A circular reference was detected while serializing an object of type 'System.Globalization.CultureInfo'.
so, this json return the data as :
i have tried like to display in View but i couldn't get the expected result..
here is the View code that;
function GenerateReport(packageID) {
var repType = '#ViewBag.ReportType';
$.ajax({
url: '/turnover/GetTurnover' + repType,//?packageID=' + packageID,
data: { "packageID": packageID },
cache: false,
type: 'POST',
datatype: 'JSON',
success: function (response) {
debugger;
you can try this one in your javascript method
function GenerateReport(packageID) {
var repType = '#ViewBag.ReportType';
$.ajax({
method: "POST",
url: '/turnover/GetTurnover' + repType,//?packageID=' + packageID,
data: '{"packageID":' + packageID + '}',
contentType: "application/json; charset=utf-8",
success: function (data) {
//loop to data.text
$.each(data.text, function( index, row ) {
console.log(row);
});
}
This is my web service
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Dictionary<string,List<string>> GetCategorias()
{
var diccionario = new Dictionary<string, List<string>>();
var categoria = "Recursos Humanos";
diccionario.Add(categoria,new List<string>());
diccionario[categoria].Add("Busqueda de recursos");
diccionario[categoria].Add("Busqueda de recursos humanos");
var categoria1 = "Informatica";
diccionario.Add(categoria1, new List<string>());
diccionario[categoria1].Add("IT");
diccionario[categoria1].Add("Departamento de Insfractructura");
//var serializer = new JavaScriptSerializer();
//string json = serializer.Serialize((object)diccionario);
return diccionario;
}
I received the dictionary in Javascript as:
function get_Categorias_Comunidades() {
$.ajax({
type: "POST",
url: "Lista_Categoria_comunidad.asmx/GetCategorias",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: llamada_Webservice,
error: llamada_Error
});
}
function llamada_Webservice(peticion) {
debugger;
}
How do I parse the keys and values to an array?
Something like this
function llamada_Webservice(peticion) {
var categories = peticion;
for(item in categories{ // Data is saved in the variable named d if it's ASP.NET WebService
var categoria = item; // The name
var list = categories[item]; // The array that you could loop thru
}
}