Ajax的成功案例在wordpress中不起作用


Ajax success case not working in 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、windows8.1和wordpress4中运行它。可以,返回console.log(data)。使用相同的代码,我在apache中运行它,xubuntu更新,wordpress4。这是不正常的,总是转到错误的情况。我找不到为什么会发生这种情况,因为是相同的整个代码,DB,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(),

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

谢谢!

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

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

例如,你不能让我的浏览器进入我的银行并获取我的账户详细信息,这样你就可以将它们发送到你的网络服务器。

同源策略不会阻止您提交将资金转移到服务器的请求,但这就是为什么网站必须对CSRF攻击进行防御的原因。

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

编辑:

关于jQuery error状态的一些解释:如果请求失败,这是一个将被调用的函数(这意味着Linux下的浏览器无法发送正确的XMLHttpRequest)。

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

注意:对于跨域脚本和跨域JSONP请求,该处理程序不会被调用,这意味着如果您的脚本达到error条件,则不是跨域请求问题,而是浏览器问题。