加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

破解AJAX

发布时间:2020-12-15 20:59:48 所属栏目:百科 来源:http://addruby.com/text.html
导读:有这样一个网站:http://addruby.com/text.html 功能是日文翻译,想利用这个网站自己写代码,利用它的服务做成一个小的翻译软件。 但是打开代码一看,是ajax的,在网上查了一下,直接把其它网站的ajax服务加到自己的代码里面还是挺麻烦的, 应为ajax设计成了


有这样一个网站:http://addruby.com/text.html

功能是日文翻译,想利用这个网站自己写代码,利用它的服务做成一个小的翻译软件。

但是打开代码一看,是ajax的,在网上查了一下,直接把其它网站的ajax服务加到自己的代码里面还是挺麻烦的,

应为ajax设计成了不能跨域名访问。


AJAX的原理我早就大概知道一点,是BS结构的异步处理,

简单理解就是网页上的多线程,一个线程维护原来的网页,使之能够显示,而不刷新,

一个线程用于AJAX通信,通信结束后改写原来网页的一部分内容。

两个线程互不干扰,AJAX通信的时候用户仍然可以观看,甚至操作原来网页。


请教了一下对AJAX比较熟的人,原来不用AJAX,直接发送post或者get请求也可以,

只不过异步功能没有了,但是一样可以完成功能。


上述网站的form代码如下:

<form name="myform" id="myform">
<textarea name="txt" cols="85" rows="8" maxlength="5000" id="txt" onblur="txtblur();" onfocus="txtfocus();">いつもAddRuby[アドルビ]をご利用頂きありがとうございます。</textarea><br><br>
<select name="target">
<option value="all">全文</option>
<option value="han">漢字のみ</option>
</select>
<select name="furigana">
<option value="hiragana">ひらがな</option>
<option value="katakana">カタカナ</option>
<option value="roman_yomi">ローマ字(読み)</option>
<option value="roman_hastu">ローマ字(発音)</option>
</select>
<input type="button" name="btn" value=" ルビ(ふりがな)を振る " id="btn" onclick="exec();return false;">
<input type="hidden" name="MODE" value="txt" id="mode">
<input type="hidden" name="EXEC" value="1">
</form>

可以看到form自己没有提交地址,而是提交到了一个javascript函数,

函数代码如下:

function exec() {
	if ($('mode').value == "txt") {
		if ($('txt').value == "") { alert("入力してください。"); $('txt').focus(); return false; }
		if (!check_null($('txt').value)) { alert("スペース、改行だけの入力はできません。"); $('txt').focus(); return false; }
		var txt = del_linefeed($('txt').value);
		var max = $('txt').maxlength;
		if (txt.length > max) { alert(max + "文字以内で入力ください。"); $('txt').focus(); return false; }
	}
	
	new Ajax.Request(
	'/addruby.cgi',{
		method : 'post',parameters : Form.serialize('myform'),onLoading: function() {
			$('res').innerHTML="<img src='/img/loading.gif' alt='Please wait.....'><br><br>Please wait.....";
			$('btn').disabled=true;
		},onComplete: function(request) {
			$('res').innerHTML=request.responseText;
			$('btn').disabled=false;
		}
	});
}

原来是把form的内容提交到了 /addruby.cgi 这个地址,

那么取消异步功能,直接用form提交请求就可以了。

代码如下,参照AJAX的提交方式,这里使用了post方式,其实测试了一下,用get方式也可以,好神奇^^

<form action=" http://addruby.com/addruby.cgi"name="myform" id="myform" method="post">
<textarea name="txt" cols="85" rows="8" maxlength="5000" id="txt" onblur="txtblur();" onfocus="txtfocus();"> いつもAddRuby[アドルビ] をご利用頂きありがとうございます。</textarea>< br><br>
<select name="target">
<option value="all">全文</option>
<option value="han">漢字のみ</option>
</select> に
<select name="furigana">
<option value="hiragana">ひらがな</option>
<option value="katakana">カタカナ</option>
<option value="roman_yomi">ローマ字(読み)</ option>
<option value="roman_hastu">ローマ字(発音)</ option>
</select> の
<input type="button" name="btn" value=" ルビ(ふりがな)を振る " id="btn" onclick="exec();return false;">
<input type="hidden" name="MODE" value="txt" id="mode">
<input type="hidden" name="EXEC" value="1">
<input type="submit" name="submit" value="Submit" />
</form>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读