Pass Server side UserGUID to a Clientside Ajax call - c#

I need to pass User Guid to the Ajax function,But when i tried i'm getting error
SyntaxError: identifier starts immediately after numeric literal
My Serverside Code
public Guid GetUserID()
{
Guid currentUserId = (Guid)Membership.GetUser().ProviderUserKey;
return currentUserId;
}
Part of Client Side Code
<script>
$(function () {
LoadUserUploadFiles();
});
id = "<%=GetUserID()%>";
function LoadUserUploadFiles(id) {
alert(id);
var url = '<%= ResolveUrl("/WebMethods.aspx/GetIndividuallyUploadedFiles") %>';
$.ajax({
url: url,
type: "POST",
data: JSON.stringify({ id: id }),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (Result) {
var html = '<table class="table-hover">';
html += '<thead>';
html += '<th>Username</th>';
html += '<th>Upload Date</th>';
html += '<th>Download</th>';
html += '<th></th>';
html += '</thead>';
html += '<tbody>';
$.each(Result.d, function (key, value) {
html += '<tr>';
html += '<td>' + value.UserName + '</td>';
html += '<td>' + value.DateStr + '</td>';
html += '<td>' + 'Download' + '</td>';
html += '<td>' + '<input type="button" value="Delete" onclick="deleteUploadFile(this,' + value.Id + ')" >' + '</td>';
html += '</tr>';
});
html += '</tbody>';
html += '</table>';
$("#uploaddata").html(html);
},
error: function (e, x) {
alert(x.ResponseText);
}
});
}

In function signature you should have the parameter name. While calling the function you should pass the guid to the function. See the example below:
MARKUP:
<%# Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script>
// Notice "id" is the parameter name here
function LoadUserUploadFiles(id){
alert(id);
};
</script>
<input id="test" type="button" value="test" onclick='LoadUserUploadFiles("<%=GetUserID()%>")' />
</div>
</form>
</body>
</html>
CODE:
using System;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public Guid GetUserID()
{
Guid currentUserId = (Guid)Membership.GetUser().ProviderUserKey;
return currentUserId;
}
}
EDIT:
You can change you code like this:
<script>
$(function () {
LoadUserUploadFiles('<%=GetUserID()%>');
function LoadUserUploadFiles(id) {
alert(id);
var url = '<%= ResolveUrl("/WebMethods.aspx/GetIndividuallyUploadedFiles") %>';
$.ajax({
//Rest of the code goes here

Wrap quotes around the GetUserId call.
function LoadUserUploadFiles("<%=GetUserID()%>")
I found this answer by Googling. Always make a search engine your first stop before asking question.

Related

How to append JSON data into select tag in ajax javascript

I am developing an ASP.Net MVC5 project and I am calling a webservice in my project with ajax. Every thing is ok so far and at the end the city names can be appended into the select tag, but the code below doesn't work:
#{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function f1() {
var token="";
$.ajax({
data: { webservice_username: 'webservice_usernam', password: 'password' },
url: 'http://www.travelinsure.ir/api/v1.1/authenticate',
type: 'POST',
dataType: 'json',
success: function (data) {
$.each(data, function (idx, result) {
token = result;
f2(result);
})
},
error: function (x, y, z) {
alert(x.responseText);
alert(z);
}
});
}
function f2(token) {
// alert('New: '+token);
$.ajax({
data: { token: token },
url: 'http://www.travelinsure.ir/api/v1.1/getcitylist?token=',
type: 'GET',
dataType: 'json',
success: function (data) {
results = JSON.stringify(data);
// a = JSON.parse(data);
alert(results);
a = $.parseJSON(data);
alert(a);
$.each(data, function (idx, r) {
$("#sel").append("<option value='" + r.city_id + "'>'" + r.city_name + "'</option>");
alert(result.city_name);
})
},
error: function (x, y, z) {
alert(x.responseText);
alert(z);
}
});
}
</script>
</head>
<body>
<div>
<input type="submit" name="name" value="Click!!!" onclick="f1()" />
</div>
<div id="mydiv">
<select id="sel">
<option>لیست شهرهای ایران</option>
</select>
</div>
</body>
</html>
Looks like you are appending the option in the wrong way.
Do it like this:
$.each(data, function(key, value) {
$('#sel').append($("<option></option>").attr("value",item.city_id).text(item.city_name));
});
You could also add a new option like this:
$.each(data, function (key, item) {
$("#sel").get(0).options[$("#sel").get(0).options.length] = new Option(item.city_name, item.city_id);
});

Adding Session Variable in C# using Ajax

I need to add variable into session state using ajax , when I tries this It didn't work. can any one please help me on this. when I click the Button It redirect to Travellerinfo.aspx page
Below is my test.aspx
<%# Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="hotelbeds.test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Tooltip - Custom animation demo</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<script type="text/javascript">
function testbook(hotelcode) {
$.ajax({
type: "POST",
url: "test.aspx/addSession",
data: "{'hotelcode':'" + hotelcode + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
window.location.href = "Hotelresul.aspx";
},
error: function (err) {
window.location.href = "TravellerInfo.aspx";
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
CS test.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.Services;
using System.Configuration;
using System.Drawing;
namespace hotelbeds
{
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs ea)
{
ImageButton testbtn = new ImageButton();
testbtn.OnClientClick = "testbook('15000')";
form1.Controls.Add(testbtn);
}
[WebMethod(EnableSession = true)]
public static void addSession(String hotelcode)
{
HttpContext.Current.Session.Add("hotelcode", hotelcode);
}
}
}
It must be
[WebMethod (EnableSession=true)]
public static void addSession(String hotelcode)
{
HttpContext.Current.Session.Add("hotelcode", hotelcode);
}
Please Note: The method must be public, static and EnableSession attribute must be true.
EDIT 1:
'return false' is added to prevent the Default function of a button. The default function of a button is to post form to server. Alternatively, event.preventDefault() can be used to prevent the default functionality.
<script type="text/javascript">
function testbook(hotelcode) {
$.ajax({
type: "POST",
url: "test.aspx/addSession",
data: "{'hotelcode':'" + hotelcode + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
window.location.href = "Hotelresul.aspx";
},
error: function (err) {
window.location.href = "TravellerInfo.aspx";
}
});
return false;
}
</script>
EDIT 2:
protected void Page_Load(object sender, EventArgs ea)
{
ImageButton testbtn = new ImageButton();
testbtn.OnClientClick = "return testbook('15000')";
form1.Controls.Add(testbtn);
}

how to send xml parameter to WCF?

How to send xml parameter to call WCF method? My client side code is in AJAX,JSON using jQuery.I want to pass xml value as parameter.How to pass xml value?
My xml value is
<value><Root>mydata</Root></value>
My client side code--
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js"></script>
<script type="text/javascript" >
jQuery.support.cors = true;
var bhRequest = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<s:Body>" +
"<GetSMC xmlns=\"http://tempuri.org/\">" +
"<value><Root>MyValue</Root></value>" +
"</GetSMC>" +
"</s:Body>" +
"</s:Envelope>";
$(document).ready(function () {
$("#btnWCFBasicHttp").click(function () {
alert("hi");
$.ajax({
type: "POST",
url: "http://localhost:8130/MyService.svc/bh/",
data: bhRequest,
timeout: 10000,
contentType: "text/xml",
dataType: "xml",
beforeSend: function (xhr) {
xhr.setRequestHeader("SOAPAction", "http://tempuri.org/IMyService/GetSMC");
},
success: function (data) {
alert("success");
$(data).find("GetSMCResponse").each(function () {
document.getElementById('Label2').innerHTML = $(this).find("GetSMCResult").text();
});
},
error: function (xhr, status, error) {
alert(error);
}
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="btnWCFREST" type="button" value="Call WCF using JQuery" />
<label ID="Label1" runat="server" Text="Label"></label>
</div>
</form>
</body>
</html>
I'm not sure if it'll work, but try to put that XML inside
<![CDATA[ and ]]>
There is also some hack with string tag, but I don't know if it is necessary (maybe only CDATA tag will be enough):
WCF RESTFul service - Pass XML as string to service
you will encrypt by base64 and pass it,on the server client you can decrypt

How to set a custom Jquery auto complete response message

I am using Jquery auto complete text box , in that i am entering a name starts with z or something which is not available in the database, at that time I need to display a custom message in auto complete mentioning that "No Datas Found"
I came up with a solution,please Correct me if the below mentioned solution is incorrect or any other alternate way to achieve it.
Thanks in advance.
AutoComplete TextBox.aspx
<%# Page Language="C#" AutoEventWireup="true" CodeBehind="AutoCompleteTextBox.aspx.cs" Inherits="Ajax_Using_Jquery.AutoCompleteTextBox" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Ajax Auto Complete Using Jquery</title>
<script type="text/javascript" src="JQuery/jquery-1.9.0.mini.js"></script>
<script type="text/javascript" src="JQuery/jquery-ui.min.js" ></script>
<%--<link type="text/css" href="StyleSheet/jquery-ui.css" rel="Stylesheet" />--%>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<%--<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script> --%>
<script type="text/javascript">
$(document).ready(function () {
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "AutoCompleteFetchService.asmx/getUserNames",
data: "{'TextBoxVal':'" + document.getElementById('txtName1').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
if (data.d == "" || data.d == null || typeof (data.d) == 'undefined') {
response(["no search found"]);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("error " + XMLHttpRequest);
alert("error " + textStatus);
alert("error " + errorThrown);
}
});
}
});
});
</script>
<%-- <link href="StyleSheet/jquery-ui.css" type="text/css" rel="Stylesheet" />--%>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td>
<div>
User Name :
<input type="text" id="txtName1" class="autosuggest" />
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
AutoCompleteFetchService.asmx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Configuration;
namespace Ajax_Using_Jquery
{
/// <summary>
/// Summary description for AutoCompleteFetchService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService()]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class AutoCompleteFetchService : System.Web.Services.WebService
{
[WebMethod]
public List<string> getUserNames(string TextBoxVal)
{
string strCon;
List<string> objList = new List<string>();
strCon = ConfigurationManager.ConnectionStrings["EmpNameFetch"].ConnectionString;
SqlConnection con = new SqlConnection(strCon);
SqlCommand cmd = new SqlCommand(#"select EmpName from newTb2 where EmpName like '%" + TextBoxVal + "%'", con);
con.Open();
SqlDataReader objReader = cmd.ExecuteReader();
while (objReader.Read())
{
objList.Add(objReader["EmpName"].ToString());
}
con.Close();
return objList;
}
}
}
The following prints "0 results" if no results are found and, if results are found, prints a helpful message to the user that says "Click or Arrow Up/Down"
messages: {noResults: '0 Results',results: function() {return 'Click or Arrow U/D'; } }

simple jquery callback works on .net3.5 but nothing fires on .net 2.0?

i have the following jquery postback method on the client
<%# Page Language="C#" AutoEventWireup="true" CodeFile="CallServerWithParameters.aspx.cs" Inherits="CallServerWithParameters" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script language="javascript">
$(document).ready(function() {
$("#txtNoOfMales").change(function() {
var ticketRequired = this.value;
var options = {
type: "POST",
url: "CallServerWithParameters.aspx/GetAvailableTicketsForMales",
data: "{no:" + ticketRequired + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
if (response.d != "") {
alert(response.d);
$("#txtNoOfMales").focus();
}
}
};
//Call the PageMethods
$.ajax(options);
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
No of Male Tickets:<asp:TextBox ID="txtNoOfMales" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
and the following web method on the server side
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
public partial class CallServerWithParameters : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetAvailableTicketsForMales(int no)
{
string result = "";
int NoOfTicketsAvailable = 5;
if (no > NoOfTicketsAvailable)
{
result = "Only " + NoOfTicketsAvailable.ToString() + " Male ticket(s) avaialable. Please eneter a lower number!";
}
return result;
}
}
problem is everything works fine on .net 3.5 but if i use the same code on .net 2.0 the
webmethod event does not get call at all, anybody have any idea what i did wrong?
thanks
updated with full source code
It works for my declaring the web method with the following attributes:
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
Also I use PageMethods.GetAvailableTicketsForMales to call the function from js.
I hope this will help you.

Categories