Ajax成功案例不适用于wordpress

时间:2014-10-21 01:53:47

标签: javascript php jquery ajax wordpress

我有这个功能(整个代码的一部分):

function helloDear_javascript() { ?>
	<script type="text/javascript" >
	jQuery(document).ready(function($) {

		$("#id").click(function(){
			$('.input_triplify').each(function(k,v){
				var mk 	= $(this).attr('mk');
				var v	= $(this).val();
				if(v != 'correspondencia' &&  $.trim(v) != ''){

					$.ajax({
						type: "POST",
						url: ajaxurl,
						data: {action: 'triplify', meta: mk, value: v },//, valores_coluna_posts:
						dataType: 'json',
						success:
							function(data){
								console.log(data);
							},
						error:
							function(data){
								alert('ocorreu um erro ao acessar o banco, favor pesquisar novamente.');
							}
					});
				}
			});
    		$("#corpo").hide(1000);
			$("#corpo2").show(1000);
			
  		});
	});
	</script> <?php
}

问题是:我的朋友在xampp,windows 8.1和wordpress 4中运行它。没关系,返回console.log(数据)。使用相同的代码,我在apache中运行它,xubuntu更新和wordpress 4.它不行,总是转到错误情况。我无法找到为什么会发生这种情况,因为它是相同的整个代码,数据库,Web浏览器等。如果我进行更改,将console.log(数据)置于错误情况下,它将返回(从Web的控制台菜单中查看)浏览器):

Object { readyState: 4, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(),

无论我做什么,它都永远不会成功!

谢谢!

1 个答案:

答案 0 :(得分:0)

您的ajaxurl很可能包含一些跨域请求值(或者至少这是浏览器的想法 - 如果您使用LAN IP address /192.168.1.10/代替127.0.0.1localhost访问它)。

如您所知,JavaScript Ajax跨域请求被拒绝执行(尽管可以绕过此限制)。此限制的要点是阻止您的网站从远程网站读取数据,而不是阻止其发送数据。

例如,您无法让我的浏览器访问我的银行并获取我的帐户详细信息,以便您将其发送到您的网络服务器。

same origin policy不会阻止您提交将资金转移到您的服务器的请求,但这就是网站必须对CSRF attacks实施防御的原因。

尝试在crossDomain: true,之后的AJAX请求中添加type: "POST"来测试代码。

修改

关于jQuery error状态的一些解释: 如果请求失败,这是function被称为 (这意味着您在Linux下的浏览器无法发送正确的XMLHttpRequest)。

该函数接收三个参数:jqXHR(在jQuery 1.4.x中,XMLHttpRequest)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数(null除外)的可能值为timeouterrorabortparsererror。发生HTTP错误时,errorThrown会收到HTTP状态的文本部分,例如Not FoundInternal Server Error.从jQuery 1.5开始,错误设置可以接受一系列函数。每个函数将依次调用。

注意:对于跨域脚本和跨域JSONP请求,此处理程序不称为,这意味着如果您的脚本进入error条件,则它不会交叉域请求问题,这是浏览器问题。