破解AJAX
有这样一个网站:http://addruby.com/text.html 功能是日文翻译,想利用这个网站自己写代码,利用它的服务做成一个小的翻译软件。 但是打开代码一看,是ajax的,在网上查了一下,直接把其它网站的ajax服务加到自己的代码里面还是挺麻烦的, 应为ajax设计成了不能跨域名访问。
AJAX的原理我早就大概知道一点,是BS结构的异步处理, 简单理解就是网页上的多线程,一个线程维护原来的网页,使之能够显示,而不刷新, 一个线程用于AJAX通信,通信结束后改写原来网页的一部分内容。 两个线程互不干扰,AJAX通信的时候用户仍然可以观看,甚至操作原来网页。
请教了一下对AJAX比较熟的人,原来不用AJAX,直接发送post或者get请求也可以, 只不过异步功能没有了,但是一样可以完成功能。
上述网站的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提交请求就可以了。 代码如下,参照AJAX的提交方式,这里使用了post方式,其实测试了一下,用get方式也可以,好神奇^^
<form action="
http://addruby.com/
<textarea name="txt" cols="85" rows="8" maxlength="5000" id="txt" onblur="txtblur();" onfocus="txtfocus();">
<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 value="roman_hastu">ローマ字(発音)</
</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>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |