如何在执行之前使 JavaScript 中的内联表达式等待
How to make Inline expression in javascript wait before executing
我有一个表达式<%= GetAddPinScript() %>
,用于计算代码隐藏文件中的方法。该方法生成 javascript,然后返回: AddPushpin('data', 'more data', numbers, numbers, 'no');
这里的关键是'no'
是由代码隐藏方法插入的变量,可以帮助我的javascript的其余部分确定某些内容是否应该显示。
我遇到的问题是,我的代码隐藏中的方法需要一个变量(在下面的代码中result
),该变量在计算表达式之前通过 ajax 调用发送,以确定要在 javascript 中生成的正确变量 - 但表达式始终在页面加载时计算。
那么如何防止在进行 ajax 调用之前计算表达式呢?
爪哇语
function displayGeneralInfo(specifics)
{
var callback = AddQueryString(window.location.href, "action", "displayResults");
$.ajax({
url: callback,
type: "POST",
async: false,
data: {
specifics: specifics
}
});
<%= GetAddPinScript() %>
}
和添加图钉功能
function AddPushpin(name, description, latitude, longitude, selected) {
// Add a pin to the map
var center = new Microsoft.Maps.Location(latitude, longitude);
var pin = new Microsoft.Maps.Pushpin(center, null);
if(selected !== null || selected!="")
{
if(selected == "yes")
{
infoboxOptions = new Microsoft.Maps.Infobox(center,
{ width: 285,
height: 170,
visible:true,
actions:[{label: 'Associate', eventHandler: associate}]
});
map.entities.push(infoboxOptions);
}
}
map.entities.push(pin);
}
和代码隐藏代码段
public string GetAddPinScript()
{
foreach (Location location in foo(x => !string.IsNullOrWhiteSpace(x.Longitude) && !string.IsNullOrWhiteSpace(x.Latitude)))
{
selected = "no";
if (!result.IsNullOrEmpty())
{
if (location.MapPinDescription.IndexOf(result) > 0)
selected = "yes";
}
pins.Add(string.Format("AddPushpin('{0}', '{1}', {2}, {3}, '{4}');",
location.etc1("'", @"''"), location.etc2("'", @"''"), location.etc3, location.etc4, selected));
string retVal = string.Join("'n", pins.ToArray());
return retVal;
你不能
让它等待。javascript在客户端上执行,此函数在服务器上运行。Asp.net 在将数据发送到客户端之前执行所有绑定,因此无法说等到某些代码在客户端上运行,然后运行此函数。我建议您在对服务器进行 ajax 调用时调用此函数。从此函数返回一些 html,然后将其包含在成功函数的 html 中。
要在 ajax 调用完成后运行 add pin 脚本,应将其设置为 ajax 调用的完整处理程序:
function displayGeneralInfo(specifics)
{
var callback = AddQueryString(window.location.href, "action", "displayResults");
$.ajax({
url: callback,
type: "POST",
async: false,
data: {
specifics: specifics
}
},
complete: <%= GetAddPinScript() %>
});
请注意,上述语法假定 GetAddPinScript
将返回一个函数,可以是现有函数的名称,也可以是匿名函数块。
相关文章:
- java.net和javascript之间正则表达式的差异
- 单击按钮以等待单击按钮
- React组件等待所需道具进行渲染
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- ng init中的表达式无法使用ng repeat
- 正则表达式在字符串中找到base64
- 我的AngularJS表达式没有'不起作用
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 正在等待呈现图表,直到加载数据为止
- 如何在执行之前使 JavaScript 中的内联表达式等待