코드 숨김 파일에서 메서드를 평가하는 표현식이 <%= GetAddPinScript() %>
입니다. 이 방법은 다음 반환 자바 스크립트를 생성 AddPushpin('data', 'more data', numbers, numbers, 'no');
자바 스크립트에서 인라인 식을 실행하기 전에 기다리는 방법
열쇠는 여기에 'no'
코드 숨김 방법으로 삽입 된 변수가 어떤 콘텐츠를 표시하거나 안하면 내 자바 스크립트의 나머지 부분이 결정하는 데 도움이 있다는 것입니다 (기본적으로합니다. BOOL)
제가하는 데 문제는 내에서 방법 코드 숨김 표현이를 결정하기 위해 평가 전에 아약스 호출 를 통해 전송되는 변수 (아래 코드에서 result
)를 필요로한다는 것입니다 자바 스크립트에서 생성 할 올바른 변수 -하지만 표현식은 항상 페이지로드에서 평가됩니다.
그렇다면 아약스 호출을하기 전에 표현식을 평가하지 못하게하려면 어떻게해야합니까?
자바 스크립트
function displayGeneralInfo(specifics)
{
var callback = AddQueryString(window.location.href, "action", "displayResults");
$.ajax({
url: callback,
type: "POST",
async: false,
data: {
specifics: specifics
}
});
<%= GetAddPinScript() %>
}
과 AddPushpin 기능
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);
}
및 코드 숨김, AJAX 호출이 완료된 후 실행 추가 핀 스크립트를 가지려면
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;
감사합니다. 벽에 머리를 대고 대답을 찾으려고했습니다. ajax 호출에서 함수를 반환하고 실행시킬 수 있습니까? –
ajax 호출에서 함수를 실행할 수 있습니다. 당신의 나머지 API가 몇몇 html를 돌려 보내고 당신의 성공 함수에서 다만 그 html를 당신의 페이지 html에서 두십시오. 예를 들면. url/xyz에 ajax 호출을하면이 요청은 컨트롤러의 일부 동작에 의해 처리됩니다. 이 액션에서 GetAddPinScript 함수를 호출 한 다음 . 그렇다면 아작스의 성공 함수에서 본문 태그의 끝에이 스크립트 태그를 추가하십시오 –
감사합니다. –