069_VisualForce Ajax 更多用法解读02

一、同步调用的异常处理:AJAX Toolkit  try catch...

<html>
	<head>
	<script src="/soap/ajax/44.0/connection.js" type="text/javascript"></script>
	<script>
		function setupPage() {
			var output = document.getElementById("output");
			var startTime = new Date().getTime()
			try {
			var queryResult = sforce.connection.query("Select Id, Name, Industry From
			Account order by Industry limit 30");
			layoutResults(queryResult, output, startTime);
			} catch(error) {
			queryFailed(error, output);
			}
		}
		function queryFailed(error, out) {
			out.innerHTML = "<font color=red>An error has occurred:</font> <p>" + error;
		}
		function layoutResults(queryResult, out, startTime) {
			var timeTaken = new Date().getTime() - startTime;
			if (queryResult.size > 0) {
				var output = "";
				var records = queryResult.getArray('records');
				for (var i = 0; i < records.length; i++) {
					var account = records[i];
					output += account.Id + " " + account.Name + " [Industry - "
					+ account.Industry + "]<BR>";
				}
				out.innerHTML = output + "<BR> query complexted in: " + timeTaken + " ms.";
			} else {
			out.innerHTML = "No records matched.";
			}
		}
	</script>
	</head>
	<body onload="setupPage()">
		div id="output"></div>
	</body>
</html>

  

二、VFPage AJAX Toolkit 中的数据迭代形式

  var result = sforce.connection.query("select id, name from account limit 10");
 var it = new sforce.QueryResultIterator(result);
  while (it.hasNext()) {
    var account = it.next();
  sforce.debug.log(account.Name);
}

三、AJAX Toolkit 中字符串单引号的使用方式

Bob's B-B-Q

Apex 中使用方式:SELECT ID from ACCOUNT WHERE Name LIKE 'Bob\'s B-B-Q%'

Ajax:SELECT ID from ACCOUNT WHERE Name LIKE 'Bob\\'s B-B-Q%'

四、使用Base64二进制编码字符串:例子待补充

引用放到static中js 要用:<apex:includeScript value="{!URLFOR($Resource.majac_static, 'js/common.js')}"/>

<apex:page >
<html> <head> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> <script src="/soap/ajax/44.0/connection.js"></script> <script> function setup() { var document_ta = document.getElementById("document-ta"); sforce.connection.query("select name, id from document limit 1", {onSuccess : querySuccess, onFailure : function(error, doc_ta) { doc_ta.value = "Oops something went wrong: " + error; }, source: document_ta}); } function querySuccess(result, doc_ta) { var records = result.getArray("records"); if (records.length == 1) { dojo.io.bind({ url: "/servlet/servlet.FileDownload?file=" + records[0].Id, load: loadDocument}); } else { doc_ta.value = "no records found"; } } function loadDocument(type, data, event) { var document_ta = document.getElementById("document-ta"); document_ta.value = data; } </script> </head> <body onload="setup()"> <textarea id="document-ta" cols="80" rows="20"> </textarea> </body> </html>
</apex:page >

  五、异步调用的超时参数:如果一个异步调用在适当的时间内没有完成,我们可以结束这个调用。要做到这一点,请在任何异步调用的回调部分中指定超时参数。

var account = new sforce.SObject("Account");
account.Name = "my new account"; sforce.connection.create([account], {onSuccess: print, onFailure: printerr, timeout: 100});

  六、Ajax 委托给Remote Site 

新建一个一条 remoete site:

sforce.connection.remoteFunction({
        url : "https://th-apex-http-callout.herokuapp.com",
           onSuccess : function(response) {
           alert("result" + response);
        }
    });

  

 

posted @ 2018-09-26 15:06  BandariFang  阅读(268)  评论(0编辑  收藏  举报