Enviroment: Visual Studio 2012, MVC4, Razor, Internet Application.
I’m working with eBay API and I want to show the search results (JSON).
I have a view page with code…
<script>
function _cb_findItemsByKeywords(root)
{
var items = root.findItemsByKeywordsResponse[0].searchResult[0].item || [];
var html = [];
html.push('<table width="100%" border="0" cellspacing="0" cellpadding="3"><tbody>');
for (var i = 0; i < items.length; ++i)
{
var item = items[i];
var title = item.title;
var pic = item.galleryURL;
var viewitem = item.viewItemURL;
if (null != title && null != viewitem)
{
html.push('<tr><td>' + '<img src="' + pic + '" border="0">' + '</td>' +
'<td><a href="' + viewitem + '" target="_blank">' + title + '</a></td></tr>');
}
}
html.push('</tbody></table>');
document.getElementById("results").innerHTML = html.join("");
}
</script>
This line in “.js” file:
var url = "http://ebay.com?..."
How can I execute this url from “.js” file automatically, when I openning this View Page? (This url sending request to Ebay server and receiving data, which will be showed on this View Page.)
I will change a question a little…
If I’m running this code from the View page, everything works fine:
<script src=http://ebay.com?... </script>
How can I receive this part(“http://ebay.com?…” as a variable) from “.js” file? Is it possible?
2
Answers
Resolved...
If you just want to send the request, you could add an image to the DOM with that as the
src
, for instance.If you want to receive data from the request, you’re going to have to do an AJAX call. This is handled quite differently in different browsers, so here’s a good idea to use a framework, such as jQuery.
Since the URL is on a different domain than yours, however, you won’t be able to access it with a regular AJAX request. You’d have to refer to what is called a JSONP request. This requires that the document you’re fetched is formatted in a specific manner to allow this. If it isn’t, JavaScript simply won’t allow this interaction, due to the Same-Origin Policy.
JSONP requires that the remote document has the following format:
If it does, you’d be able to include a script file to the DOM with that URL as the
src
, the content of the document, once fetched, will be immediately executed in your browser. You should by then have specified a callback function with a name matching the callback being made in the document (this is usually something you can specify with through querystrings in the original request).If none of these options are available for you, because of the format of the remote document, then you’re going to have to request the document from server side. If you don’t have access to a serverside environment yourself, in order to do this, there is the option of using somebody elses server. Yahoo’s custom query language – YQL – can be used for querying the content of remote documents, and YQL is available through JSONP, so you could possibly relay your request through them.
See this post on using YQL with JSONP
Update, now that you’ve added more data, eBay API is available for JSONP, and I think that’s the solution you’re looking for.