以下是带有bing的JSON的MSDN网站示例中的示例
我可以获得警告0,但此示例并未调用回调。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>Bing API 2.0 Web Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script id="searchCallback" type="text/javascript" src=""></script>
<script type="text/javascript">
// Replace the following string with the AppId you received from the
// Bing Developer Center.
var AppId = "SOME APP ID HERE";
// Bing API 2.0 code sample demonstrating the use of the
// Web SourceType over the JSON Protocol.
function Search()
{
var requestStr = "http://api.bing.net/json.aspx?"
// Common request fields (required)
+ "AppId=" + AppId
+ "&Query=msdn blogs"
+ "&Sources=Web"
// Common request fields (optional)
+ "&Version=2.0"
+ "&Market=en-us"
+ "&Adult=Moderate"
+ "&Options=EnableHighlighting"
// Web-specific request fields (optional)
+ "&Web.Count=10"
+ "&Web.Offset=0"
+ "&Web.Options=DisableHostCollapsing+DisableQueryAlterations"
// JSON-specific request fields (optional)
+ "&JsonType=callback"
+ "&JsonCallback=SearchCompleted";
var requestScript = document.getElementById("searchCallback");
requestScript.src = requestStr;
alert("0");
}
function SearchCompleted(response)
{
alert("1");
var errors = response.SearchResponse.Errors;
if (errors != null)
{
// There are errors in the response. Display error details.
DisplayErrors(errors);
}
else
{
// There were no errors in the response. Display the
// Web results.
DisplayResults(response);
}
}
function DisplayResults(response)
{
alert("2");
var output = document.getElementById("output");
var resultsHeader = document.createElement("h4");
var resultsList = document.createElement("ul");
output.appendChild(resultsHeader);
output.appendChild(resultsList);
var results = response.SearchResponse.Web.Results;
// Display the results header.
resultsHeader.innerHTML = "Bing API Version "
+ response.SearchResponse.Version
+ "<br />Web results for "
+ response.SearchResponse.Query.SearchTerms
+ "<br />Displaying "
+ (response.SearchResponse.Web.Offset + 1)
+ " to "
+ (response.SearchResponse.Web.Offset + results.length)
+ " of "
+ response.SearchResponse.Web.Total
+ " results<br />";
// Display the Web results.
var resultsListItem = null;
var resultStr = "";
for (var i = 0; i < results.length; ++i)
{
resultsListItem = document.createElement("li");
resultsList.appendChild(resultsListItem);
resultStr = "<a href=\""
+ results[i].Url
+ "\">"
+ results[i].Title
+ "</a><br />"
+ results[i].Description
+ "<br />Last Crawled: "
+ results[i].DateTime
+ "<br /><br />";
// Replace highlighting characters with strong tags.
resultsListItem.innerHTML = ReplaceHighlightingCharacters(
resultStr,
"<strong>",
"</strong>");
}
}
function ReplaceHighlightingCharacters(text, beginStr, endStr)
{
alert("3");
// Replace all occurrences of U+E000 (begin highlighting) with
// beginStr. Replace all occurrences of U+E001 (end highlighting)
// with endStr.
var regexBegin = new RegExp("\uE000", "g");
var regexEnd = new RegExp("\uE001", "g");
return text.replace(regexBegin, beginStr).replace(regexEnd, endStr);
}
function DisplayErrors(errors)
{
alert("4");
var output = document.getElementById("output");
var errorsHeader = document.createElement("h4");
var errorsList = document.createElement("ul");
output.appendChild(errorsHeader);
output.appendChild(errorsList);
// Iterate over the list of errors and display error details.
errorsHeader.innerHTML = "Errors:";
var errorsListItem = null;
for (var i = 0; i < errors.length; ++i)
{
errorsListItem = document.createElement("li");
errorsList.appendChild(errorsListItem);
errorsListItem.innerHTML = "";
for (var errorDetail in errors[i])
{
errorsListItem.innerHTML += errorDetail
+ ": "
+ errors[i][errorDetail]
+ "<br />";
}
errorsListItem.innerHTML += "<br />";
}
}
</script>
</head>
<body onload="Search()">
Bing api test
<div id="output"></div>
</body>
<script id="searchCallback" type="text/javascript" src=""></script>
</html>
如果我手动请求requestStr,我可以得到回复:
if(typeof SearchCompleted == 'function') SearchCompleted({"SearchResponse":{"Version":"2.0","Query":{"SearchTerms":"msdn blogs"},"Web":{"Total":2,"Offset":0,"Results":[{"Title":"MSDN Blogs","Description":"Integrated blog from the Microsoft Developer Network.","Url":"http:\/\/blogs.msdn.com\/","DisplayUrl":"blogs.msdn.com","DateTime":"2012-01-09T22:59:00Z"},{"Title":"Remote Desktop Services (Terminal Services) Team Blog - Site Home ...","Description":"All postings, articles, and other content on this blog are provided ”AS IS” with with no warranties, and confer no rights. Any code, demo, or sample on this blog ...","Url":"http:\/\/blogs.msdn.com\/b\/rds\/","DisplayUrl":"blogs.msdn.com\/b\/rds","DateTime":"2012-01-11T17:59:00Z"}]}}} /* pageview_candidate */);
我无法看到请求被放入&#34; searchCallback&#34; SRC
我已经尝试过IE9 FF和Chrome,都不能正常工作:(
答案 0 :(得分:0)
如果您只是更改现有元素的来源,请求就不会启动。请尝试以下操作,替换以下行:
var requestScript = document.getElementById("searchCallback");
requestScript.src = requestStr;
使用:
var commScript = document.createElement("script");
commScript.src = requestStr;
commScript.type = "text/javascript";
commScript.charset = "UTF-8";
//Find the head element such that we can append our communication script
if(document.head)
{
head = document.head;
}
else if(document.getElementsByTagName)
{
head = document.getElementsByTagName('head')[0];
}
else
{
document.write("An error occured");
}
head.appendChild(commScript);