In shared folder of ASP.NET C#, I create a .cshtml which defines a button that can GET data from an API. I would like to generate an url and use it to update an iframe of a viewer.
function callAPI(searchText) {
$.ajax({
url: '/Home/CallAPI',
data: { Text: searchText },
type: "GET",
success: function (result) {
var data = JSON.stringify(result); // server response
found_data = data;
$(result).each(function () {
if (this.status == "found") {
alert("Found!" + data);
var frameElement = document.getElementById("SearchingMap");
lon = result.results[0].lon;
lat = result.results[0].lat;
new_searching_url = "http://xx.xxx.xxx.xxx:8080/styles/osm-bright-tw/#17/" + lat.toString() + "/" + lon.toString();
console.log(frameElement.src); // undefined
frameElement.src = new_searching_url;
console.log(frameElement.src); // "http://xx.xxx.xxx.xxx:8080/styles/osm-bright-tw/#17/.../..."
}
else {
alert("Sorry! Not found");
}
});
},
error: function () {
alert("Sorry! Not found");
}
});
}
However, the iframe in the viewer, which named SearchingMap.cshtml, doesn’t updated.
@{ViewBag.Title = "SearchingMap";}
<div id="SearchingMap">
<h3>Searching map</h3>
<iframe src="http://xx.xxx.xxx.xxx:8080/styles/osm-bright-tw/#10.01/25.0709/121.5008" frameborder="0" scrolling="no">Your browser doesn't support iframe.</iframe>
</div>
Why can’t it work? How can I update the iframe of a viewer?
Advertisement
Answer
Here the iframe did not have the id SearchingMap so all javascript code fails because of this line:
var frameElement = document.getElementById("SearchingMap");
Just add this id, on your iframe
<iframe id="SearchingMap" ...