具有URL功能的自动表单帖子

时间:2015-12-25 18:41:19

标签: javascript forms url post

我的javascript有问题。我使用谷歌api,它包含ajax。这里的问题是,我需要从像http://examplesite.com/index.php?s=some+values这样的URL中捕获值。我需要自动搜索值。我试着这么做。但是,我无法做到。我怎么能这样做?

这是我提交的表格:



    <form id="searchForm" method="post">
		
    <fieldset style="width: 520; height: 68">
        
    <input id="s" type="text" name="s" />
          
    <input type="submit" value="Submit" id="submitButton" />
&#13;
&#13;
&#13;

这是我的javascript代码:

&#13;
&#13;
$(document).ready(function(){
	
	var config = {
		siteURL		: 'stackoverflow.com',	// Change this to your site
		searchSite	: true,
		type		: 'web',
		append		: false,
		perPage		: 8,			// A maximum of 8 is allowed by Google
		page		: 0				// The start page
	}
	
	// The small arrow that marks the active search icon:
	var arrow = $('<span>',{className:'arrow'}).appendTo('ul.icons');
	
	$('ul.icons li').click(function(){
		var el = $(this);
		
		if(el.hasClass('active')){
			// The icon is already active, exit
			return false;
		}
		
		el.siblings().removeClass('active');
		el.addClass('active');
		
		// Move the arrow below this icon
		arrow.stop().animate({
			left		: el.position().left,
			marginLeft	: (el.width()/2)-4
		});
		
		// Set the search type
		config.type = el.attr('data-searchType');
		$('#more').fadeOut();
	});
	
	// Adding the site domain as a label for the first radio button:
	$('#siteNameLabel').append(' '+config.siteURL);
	
	// Marking the Search tutorialzine.com radio as active:
	$('#searchSite').click();	
	
	// Marking the web search icon as active:
	$('li.web').click();
	
	// Focusing the input text box:
	$('#s').focus();

	$('#searchForm').submit(function(){
		googleSearch();
		return false;
	});
	
	$('#searchSite,#searchWeb').change(function(){
		// Listening for a click on one of the radio buttons.
		// config.searchSite is either true or false.
		
		config.searchSite = this.id == 'searchSite';
	});
	
	
	function googleSearch(settings){
		
		// If no parameters are supplied to the function,
		// it takes its defaults from the config object above:
		
		settings = $.extend({},config,settings);
		settings.term = settings.term || $('#s').val();
		
		if(settings.searchSite){
			// Using the Google site:example.com to limit the search to a
			// specific domain:
			settings.term = 'site:'+settings.siteURL+' '+settings.term;
		}
		
		// URL of Google's AJAX search API
		var apiURL = 'http://ajax.googleapis.com/ajax/services/search/'+settings.type+'?v=1.0&callback=?';
		var resultsDiv = $('#resultsDiv');
		
		$.getJSON(apiURL,{q:settings.term,rsz:settings.perPage,start:settings.page*settings.perPage},function(r){
			
			var results = r.responseData.results;
			$('#more').remove();
			
			if(results.length){
				
				// If results were returned, add them to a pageContainer div,
				// after which append them to the #resultsDiv:
				
				var pageContainer = $('<div>',{className:'pageContainer'});
				
				for(var i=0;i<results.length;i++){
					// Creating a new result object and firing its toString method:
					pageContainer.append(new result(results[i]) + '');
				}
				
				if(!settings.append){
					// This is executed when running a new search, 
					// instead of clicking on the More button:
					resultsDiv.empty();
				}
				
				pageContainer.append('<div class="clear"></div>')
							 .hide().appendTo(resultsDiv)
							 .fadeIn('slow');
				
				var cursor = r.responseData.cursor;
				
				// Checking if there are more pages with results, 
				// and deciding whether to show the More button:
				
				if( +cursor.estimatedResultCount > (settings.page+1)*settings.perPage){
					$('<div>',{id:'more'}).appendTo(resultsDiv).click(function(){
						googleSearch({append:true,page:settings.page+1});
						$(this).fadeOut();
					});
				}
			}
			else {
				
				// No results were found for this search.
				
				resultsDiv.empty();
				$('<p>',{className:'notFound',html:'No Results Were Found!'}).hide().appendTo(resultsDiv).fadeIn();
			}
		});
	}
	
	function result(r){
		
		// This is class definition. Object of this class are created for
		// each result. The markup is generated by the .toString() method.
		
		var arr = [];
		
		// GsearchResultClass is passed by the google API
		switch(r.GsearchResultClass){

			case 'GwebSearch':
				arr = [
					'<div class="webResult">',
					'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'</a></h2>',
					'<p>',r.content,'</p>',
					'<a href="',r.unescapedUrl,'" target="_blank">',r.visibleUrl,'</a>',
					'</div>'
				];
			
		}
		
		// The toString method.
		this.toString = function(){
			return arr.join('');
		}
	}
	
	
});
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

看看我的回答here。如您所见,设置get参数并不困难。现在,我将向您展示如何获取get参数:

function getGetParameter(paramName)
{
    var url = window.location.href;
    if (url.indexOf(paramName + "=") >= 0)
    {
        var returnValue = url.substring(url.indexOf(paramName + "="));
        if (returnValue.indexOf("&") >= 0)
        {
            returnValue = returnValue.substring(0, returnValue.indexOf("&"));
        }
        return returnValue.substring(returnValue.indexOf("=") + 1);
    }
    return null;
}

关于自动搜索值,您需要指定要搜索的内容和方式,因为这可以通过无数种方式进行字面处理。

答案 1 :(得分:0)

也许这就是问题所在:您尝试使用API​​并且它不再可用。

Object {responseData: null, responseDetails: "This API is no longer available.", responseStatus: 403}

此处提供更多信息:https://developers.google.com/image-search/v1/jsondevguide

现在,我正在尝试迁移到版本2.