Is it possible to put ASp.NET tags in my javascript which is in a seperate script file. For example, I have the following
$.getJSON("/Postcode/GetAddressResults/" + $get("SearchPostcode").value, null, function(data) {
which I want to turn into but it does not like the ASP tags!
var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("SearchPostcode").value
$.getJSON(action, null, function(data) {
However this does not seem to work, what am I doing wrong?
Add to your master page(s) a meta tag to hold the value of the current applications path from the host (the bit the ~ represents).
In your Javascript create a function which will resolve a ~ prefixed path using the meta tag content.
Edit
Example as requested:-
Place this code in the head section your master pages:-
<meta id="meta.AppDomainAppVirtualPath"
name="AppDomainAppVirtualPath" value="<%=HttpRuntime.AppDomainAppVirtualPath%>" />
In your javascript include this function:-
function resolveUrl(url)
{
if (url.charAt(0) == "~")
{
if (!resolveUrl.appPath)
{
var meta = document.getElementById('meta.AppDomainAppVirtualPath');
resolveUrl.appPath = meta ? meta .getAttribute("content") : '/';
}
if (resolveUrl.appPath == '/')
return url.slice(1, url.length;
else
return resolveUrl.appPath + url.slice(1, url.length);
}
else
{
return url;
}
}
Now your line of code is:-
$.getJSON(resolveUrl("~/Postcode/GetAddressResults/") + $get("SearchPostcode").value, null, function(data) {
If your JavaScript is in a separate script file, then it won't be processed by ASP.NET, so these tags won't be processed. You'll need them inline in an ASP.NET page for this to work.
No, you can`t. You can expose a path within your view to javascript, but not directly in your external javascript file.
@David M Inlining the whole thing is not really neccesary, you can inline the dynamic part and leave the other part hardcoded.
Regards, Peter
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.