AJAX array stopping AJAX call - javascript

Please see the AJAX code below:
function Save()
{
var checkBoxArray = $("input:checkbox:checked").map(function () {
return this.id
}).get();
var str = JSON.stringify(checkBoxArray);
var user = document.getElementById("ctl00_ContentPlaceHolder1_lstUsers");
$.ajax({
type: "POST",
url: "frmReview.aspx/AllocateReview",
data: '{strUser: "' + user.value + '", strCheckBoxes: ' + str + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess(),
async: false,
failure: function (response) {
alert('There was a problem allocating the reviews')
}
});
function OnSuccess() {
return function (response) {
alert("The reviews where allocated successfully");
}
}
}
and the server side code below:
<System.Web.Services.WebMethod()> _
Public Shared Sub AllocateReview(ByVal strUser As String, ByVal strCheckBoxes As String)
msgbox("got here")
End Sub
I put a breakpoint on the messagebox (server side). However, it is not reached. It is reached if I do not pass str (which is an array) i.e. I exclude it on the client side and server side. Why is the array not passed to the server? There is no error - it is as if nothing happens.

In a jQuery $.ajax() call, the data property should be either
a URL-style query string ("foo=bar&hello=world");
a plain object ({ foo: "bar", hello: "world" });
an array of objects with name and value properties
[ { name: "foo", value: "bar" },
{ name: "hello", value: "world" }]
Your code is building a JSON string, and I don't think it should be.

Related

I am trying to convert byte[] to base64 but getting error

I want to create QR Code from user data. I have using below library for creating QR Code.
Install-Package QRCoder
Now I have done below code to convert data into base64 string.
private static Byte[] BitmapToBytes(Bitmap img)
{
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
return stream.ToArray();
}
}
public JsonResult SaveVisitorEntry(string FirstName, string LastName)
{
//VisitorEntryDA pdm = new VisitorEntryDA();
object obj = "";//pdm.getCity(country_id, Convert.ToInt64(state_id));
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(FirstName + " " + LastName, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
ImageConverter converter = new ImageConverter();
return Json(JsonConvert.SerializeObject(BitmapToBytes(qrCodeImage)));
}
Below is my AJAX code where i am converting Base64 to image and showing my QR code to image.
jQuery.ajax({
url: "../VisitorEntry/SaveVisitorEntry",
type: "POST",
//data: "{function:'" + value + "'}",
data: "{FirstName:'" + FirstName + "',LastName:'" + LastName + "'}",
dataType: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
debugger
jQuery("#wait").css("display", "none");
toastr['success']('Line Stoppage closed Successfully');
//var results = JSON.parse(data);
//if (results.length == 0) {
// jQuery("#wait").css("display", "none");
//} else {
// f_group_data = results.Table;
// bindDropDown("function_name", f_group_data, "FUNCTION", "FUNCTION", "Select");
// jQuery('#function_name').chosen();
// jQuery('#function_name').trigger("chosen:updated");
// jQuery("#wait").css("display", "none");
//}
QrCodeImage.setAttribute('src', "data:image/jpg;base64," + data);
//setTimeout(function () {// wait for 5 secs(2)
// location.reload(); // then reload the page.(3)
//}, 3000);
},
error: function (data) {
jQuery("#wait").css("display", "none");
console.log("error");
}
});
I am not getting correct formate of base64 string and getting below error in console.
Failed to load resource: net::ERR_INVALID_URL
Below value I am getting in data variable
""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RhumON2gRI/StEYbT26NNkxrtFG/a402TGu08eTWaMMUpxuU6FGa1mjjya3RhmmNNup3rdGGaY02ntwabZjidIMSPUrTGm08uTXaMK3RRv2uNdowrdHGk1ujDVOcblCiR2lao40nt0YbpjXaqN+1RhumNdp4cmu0YYrTDUr0KE1rtPHk1mjDtEYb9bvWaMO0RhtPbo02THG6QYkepWmNNp7cGm2Y1mijftcabZjWaOPJrdGGKU43KNGjNK3RxpNbow3TGm3U71qjDdMabTy5NdowxekGJXqUpjXaeHJrtGFao436XWu0YVqjjSe3RhumON2gRI/StEYbT26NNkxrtFG/a402TGu08eTWaMMUpxuU6FGa1mjjya3RhmmNNup3rdGGaY02ntwabZjidIMSPUrTGm08uTXaMK3RRv2uNdowrdHGk1ujDVOcblCiR2lao40nt0YbpjXaMK3RhmmNNkxrtGFao40nt0YbpjjdoESP0rRGG09ujTZMa7RhWqMN0xptmNZow7RGG09ujTZMcbpBiR6laY02ntwabZjWaMO0RhumNdowrdGGaY02ntwabZjidIMSPUrTGm08uTXaMK3RhmmNNkxrtGFaow3TGm08uTXaMMXpBiV6lKY12nhya7RhWqMN0xptmNZow7RGG6Y12nhya7RhitMNSvQoTWu08eTWaMO0RhumNdowrdGGaY02TGu08eTWaMMUpxuU6FGa1mjjya3RhmmNNkxrtGFaow3TGm2Y1mjjya3RhilONyjRozSt0caTW6MN0xptmNZow7RGG6Y12jCt0caTW6MNU5xuUKJHaVqjjSe3RhumNdowrdGGaY02TGu0YVqjjSe3RhumON2gRI/StEYbT26NNkxrtGFaow3TGm2Y1mjDtEYbT26NNkxxukGJHqVpjTae3BptmNZow7RGG6Y12jCt0YZpjTae3BptmOJ0gxI9StMabTy5NdowrdGGaY02TGu0YVqjDdMabTy5NdowxekGJXqUpjXaeHJrtGFaow3TGm2Y1mjDtEYbpjXaeHJrtGGK0w1K9ChNa7Tx5NZow7RGG6Y12jCt0YZpjTZMa7Tx5NZowxSnG5ToUZrWaOPJrdGGaY02TGu0YVqjDdMabZjWaOPJrdGGKU43KNGjNK3RxpNbow3TGm2Y1mjDtEYbpjXaMK3RxpNbow1TnG5QokdpWqON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…"
The base64 value you provided in your question is malformed, my recommendation is to not use Json Serialization for this Api response effort.
Try using Convert.ToBase64String
Ensure the method returns string
and the jQuery request accepts/expects text for dataType
response.
Diff in your Api Endpoint
public IActionResult SaveVisitorEntry(string FirstName, string LastName)
{
...
return Ok(Convert.ToBase64String(BitmapToBytes(qrCodeImage)));
}
Diff in your request
jQuery.ajax({
dataType: "text",
success: function (data) {
QrCodeImage.setAttribute('src', "data:image/jpg;base64," + data);
}
});
Edit
Correction on contentType, shoul be dataType that is changed to handle response of request.
Additionally,
Though I'm not certain this is related to the issue you're observing here, I do think the data request payload should be an object, not a string.
...
type: "POST",
data: {
FirstName: FirstName,
LastName: LastName
},
dataType: "text",
...
You should also consider handling scenarios where both Firstname and Lastname parameter are null, whitespace or string.Empty in your Api endpoint.
I would also string.Trim() here as a sanity effort: qrGenerator.CreateQrCode($"{FirstName} {LastName}".Trim(), QRCodeGenerator.ECCLevel.Q);

Sending Array Object Data in Javascript to ASP.NET Core Controller using AJAX ()

I've tried all other solutions pertaining to the problem, but still can't find what i'm missing for my code. Here's my AJAX() Code.
var group = JSON.stringify({ 'listofusers': listofusers });
console.log("listofusers : " + JSON.stringify({ 'listofusers': group }));
(Assuming I have my listofusers object ready, and yes i've checked the console and it has data inside.)
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: "POST",
url: url,
data: group,
success: function (data) {
console.log("output : " + JSON.stringify(data));
//doSend(JSON.stringify(data));
//writeToScreen(JSON.stringify(data));
},
error: function (data) {
console.log("error : " + JSON.stringify(data));
},
});
Here's my Server Side Controller.
[HttpPost]
public IActionResult GetMesssage(List<UserModel> listofusers)
{
var g = listofusers;
}
Just a simple fetch from the controller, so I could verify that the data from client side has really been sent.
I've tried the [FromBody] attribute, but still no luck in fetching the data from the server-side.
Here is a working demo like below:
1.Model:
public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
}
2.View(remove Content-type):
<script>
var listofusers = [
{ id: 1, name: 'aaa' },
{ id: 2, name: 'bbb' },
{ id: 3, name: 'ccc' }
];
var group = { 'listofusers': listofusers };
console.log(group);
$.ajax({
dataType: 'json',
type: "POST",
url: "/home/GetMesssage",
data: group,
success: function (data) {
console.log("output : " + JSON.stringify(data));
},
error: function (data) {
console.log("error : " + JSON.stringify(data));
},
});
</script>
3.Console.log(group):
4.Result:
Update:
Another way by using json:
1.View(change group from JSON.stringify({ 'listofusers': listofusers });
to JSON.stringify(listofusers);):
<script>
var listofusers = [
{ id: 1, name: 'aaa' },
{ id: 2, name: 'bbb' },
{ id: 3, name: 'ccc' }
];
var group = JSON.stringify(listofusers);
console.log(group);
$.ajax({
contentType:"application/json",
dataType: 'json',
type: "POST",
url: "/home/GetMesssage",
data: group,
success: function (data) {
console.log("output : " + JSON.stringify(data));
},
error: function (data) {
console.log("error : " + JSON.stringify(data));
},
});
</script>
2.Controller(add FromBody):
[HttpPost]
public IActionResult GetMesssage([FromBody]List<UserModel> listofusers)
{
//...
}
You can try this one.
First stringify the parameter that you want to pass:
$.ajax({
url: url,
type: "POST",
data: {
listofusers: JSON.stringify(listofusers),
},
success: function (data) {
},
error: function (error) {
}
});
Then in your controller:
[HttpPost]
public IActionResult GetMesssage(string listofusers)
{
var jsonModel = new JavaScriptSerializer().Deserialize<object>(listofusers); //replace this with your deserialization code
}
What we're doing here is passing your object as a string then deserializing it after receiving on the controller side.
Hope this helps.
I found the solution to my problem guys, but I just want a clarification that maybe there's a work around or another solution for this one.
I've studied the data passed by "JSON.stringify();" from AJAX() and it's somehow like this.
"[[{\"ID\":0,\"UserID\":1014,\"Level\":\"support\",\"Department\":\"\",\"Facility\":\"Talisay District Hospital\",\"Firstname\":\"Joseph\",\"Middlename\":\"John\",\"Lastname\":\"Jude\",\"LoginStatus\":false,\"IPAddress\":\"192.168.110.47:12347\"},{\"ID\":0,\"UserID\":1014,\"Level\":\"support\",\"Department\":\"\",\"Facility\":\"Talisay District Hospital\",\"Firstname\":\"Joseph\",\"Middlename\":\"John\",\"Lastname\":\"Jude\",\"LoginStatus\":false,\"IPAddress\":\"192.168.110.47:15870\"}]]"
to which I was wondering that if the JSON format is a factor in parsing the data from the controller side. (Which of course is stupid since there's only one JSON format. (or maybe there's another, if there is, can you please post some source for reference.))
so I tried Serializing a Dummy Data in my model in "JsonConvert.Serialize()" Method and the output JSON data is like this.
[{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:12347"},{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:16709"}]
and I tried sending the output JSON Data from JsonConvert.Serialize() Method to controller via AJAX() and it worked! And I feel so relieved right now as this problem was so frustrating already.
If there's something wrong with what I found, please respond with what might be wrong or correct. Thank you!

Passing an array Of Objects Into An MVC .net core Controller Method Using jQuery Ajax

am using .netcore 1.1 , Visual studio 2017 , Jquery version = "3.2.1"
,am trying to make the MVC controller to get data from my page ,
i have 2 arrays in java , one is an array of Object (model view) and one is an array of strings
objects array always return error 400 (bad request)
2- string array ,always send null to the controller
i followed the below answers with no success
https://stackoverflow.com/a/13255459/6741585
and
https://stackoverflow.com/a/18808033/6741585
below is my chtml page
//#region send data back t oserver
$('#Savebtn').click(function () {
console.log(editedRows);
var UpdatedRows = JSON.stringify({ 'acActivityed': editedRows });
console.log(UpdatedRows);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/acActivity/Edit",
//traditional: true,
data: UpdatedRows ,
dataType: "json",
success: function (data) {
// here comes your response after calling the server
alert('Suceeded');
},
error: function (jqXHR, textStatus, errorThrown) {
alert("error : " + jqXHR.responseText);
}
});
});
//#endregion
//#region deleted all selected
$('#DeleteSelectedbtn').on('click', function () {
if (confirm("Are you sure to delete All Selected ?????")) {
var selectedData = [];
var selectedIndexes;
selectedIndexes = grid.getSelectedRows();
jQuery.each(selectedIndexes, function (index, value) {
selectedData.push(grid.getDataItem(value).id);
});
console.log(selectedData);
var SelectedIds = selectedData.join(',') ;
console.log(SelectedIds);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/acActivity/DeleteSelected",
data: JSON.stringify({ "ids": SelectedIds }),
dataType: "json",
success: function (data) {
grid.render();
},
error: function (err) {
alert("error : " + err);
}
});
}
});
//#endregion
and both do have data as below console shots
the selected ID's one
my Controller
this one should expect the list of object and always return bad request ,
[HttpPost]
[ValidateAntiForgeryToken]
//public jsonResult Edit( List<acActivitytbl> acActivityed)
public ActionResult Edit( List<acActivitytbl> acActivityed)
{
foreach (acActivitytbl it in acActivityed)
{
logger.Log(LogLevel.Info, it.ID);
logger.Log(LogLevel.Info, it.Name);
logger.Log(LogLevel.Info, it.IsActive);
}
//return View(acActivityed);
return Json(new { success = true, responseText = "end of Page" });
}
that one should expect the delimited string ,but always receive null
public ActionResult DeleteSelected(string ids)
{
try
{
char[] delimiterChars = { ' ', ',', '.', ':', ' ' };
string[] words = ids.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
if (words != null && words.Length > 0)
{
foreach (var id in words)
{
bool done = true; //new acActivitiesVM().Delete(Convert.ToInt32(id));
logger.Log(LogLevel.Info, " acActivities ID {0} is Deleted Scussefully ", id);
}
return Json(new { success = true, responseText = "Deleted Scussefully" });
}
return Json(new { success = false, responseText = "Nothing Selected" });
}
catch (Exception dex)
{
..... removed to save space
});
}
}
i know there is something missing here ,but i cannot find it ,any help in that ??

Ajax firing success event but not getting to the web method

I'm using ajax to call a server side function. for some reason, the success is firing but it doesn't get to the function
here is the javascript
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: "Server.aspx/sendEmail",
data: { name: "foo", company: "bar", country: "foo", email: "bar", msg: "bla" },
async: false,
success: function (data) {
var a = 3;
},
error: function (a, b) {
alert("error");
var a = 43;
}
});
});
here is the c#
[WebMethod]
public static string sendEmail(string name, string company, string country, string email, string msg)
{
//somecode here
}
the data message(for some reason it is breaking)
<form method="post" action="./sendEmail?%7b%22name%22%3a%22foo%22%2c%22company%22%3a%22bar%22%2c%22country%22%3a%22foo%22%2c%22email%22%3a%22bar%22%2c%22msg%22%3a%22bla%22%7d" id="form1">
<div>
</div>
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="368A1591" />
Take the following points into account when you are calling an ASP.NET AJAX page methods:
To use ASP.NET AJAX page methods, you need to make a POST request. This is to prevent CSRF
Ensure that the contentType is set to application/json.
Use JSON.stringify to convert the JavaScript object into JSON text.
Your JS code could be something similar to this:
$(document).ready(function () {
var data = { name: "foo", company: "bar", country: "foo", email: "bar", msg: "bla" };
$.ajax({
url: "Server.aspx/sendEmail",
type: "POST",
data: JSON.stringify(data),
async: false,
contentType: 'application/json',
success: function (data) {
//Do something
},
error: function (xhr) {
alert('Request Status: ' + xhr.status
+ ' Status Text: ' + xhr.statusText
+ ' ' + xhr.responseText);
}
});
});
If it still doesn't work, check the statusText for the error.

How do I get the right $.ajax data type

could you please help with this. I have the following javascript:
$('form').click(function (e)
{
if (e.target.getAttribute('id') === 'SubmitAddLevel')
{
var parent = $('#' + e.target.getAttribute('attr')),
var Data = [];
parent.find('.input').children().each(function (i, e)
{
Data.push(e.getAttribute('id') + ":" + e.value);
console.log(Data);
});
$.ajax({
type: "POST",
url: 'AjaxControls.aspx/CreateUserLevel',
//data: Data, //.join(','),
dataType: "text",
contentType: "application/json; charset=utf-8",
//error: function (er) { alert(er); },
success: function (response)
{
if (response.d === "true")
{
$("#ErrorDivAddLevel").html('Level created successfully!').fadeIn('slow');
}
else
{
$("#SuccessDivAddLevel").html('Level creation failed!').fadeIn('slow');
}
},
});
}
The result of 'Data' I got on the console is :["LevelNameAddLevel:Admin", "PriviledgeIDAddLevels:|1|2|3|4|5|6|7|"]. How do I convert this to what ajax will pass to my web menthod?
Here is the web method
<WebMethod(EnableSession:=True)>
Public Shared Function CreateUserLevel(userLevel As String, userPriviledges As String) As String
return "true"
end function
I think your Data should look something more like this:
[{"LevelNameAddLevel":"Admin"}, {"PriviledgeIDAddLevels":"|1|2|3|4|5|6|7|"}]
So you have key / value pairs inside of an array. In the request, you should then be able to fetch the data via the keys in the request.
But I'm not quite sure what this is supposed to mean : "|1|2|3|4|5|6|7|"

Categories

Resources