私はこの問題に正しく取り組んでいないかもしれませんが、ここで何が起こっているのか. 呼び出したい RESTful Web サービスがいくつかあります。それらを呼び出すコードは JavaScript です。それは次のように呼ばれます:
<h:body onload="smaInit();">
<h:form onsubmit="smaSignUp();">
ページが読み込まれるたびに、2 つの Ajax 呼び出しを行います。これらの呼び出しは成功します。フォームが送信されるたびに、さらに 2 つの Ajax 呼び出しを行いたいと考えています。ただし、これらの呼び出しは失敗します。Firebug からのエラーは表示されないため、何が起こっているのかわかりません。
失敗すると言うときの意味を詳しく説明すると、Netbeans では、Rest 呼び出しにブレークポイントがあります。onload イベントがトリガーされると、ブレークポイントにヒットします。ただし、onsubmit イベントがトリガーされたときにブレークポイントにヒットしません。
現在の私の唯一の理論は、Ajax 呼び出しはページの送信では機能しないということです。これは正しいです?ページを変更すると、Ajax 呼び出しが終了する前に強制終了されますか?
とにかく、どんな洞察でも良いでしょう。呼び出されている JavaScript は次のとおりです。
function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { vars[key] =価値; }); 変数を返します。}
function post(req, json, url)
{
req.open("POST", url, true);
req.setRequestHeader("Content-Type",
"application/json");
req.send(json);
}
function createRequest() {
var result = null;
if (window.XMLHttpRequest) {
// FireFox, Safari, etc.
result = new XMLHttpRequest();
if (typeof result.overrideMimeType !== 'undefined') {
result.overrideMimeType('text/xml'); // Or anything else
}
}
else if (window.ActiveXObject) {
// MSIE
result = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
// No known mechanism -- consider aborting the application
}
return result;
}
function createClientRecord(ip)
{
//get users id from url
var id = getUrlVars()["said"];
//get time
var timeStamp = new Date().getTime();
var url = [location.protocol, '//', location.host, location.pathname].join('');
var map = {"userId": id, "ip": ip, "timeStamp": timeStamp, "url": url};
return JSON.stringify(map);
}
function signUp(clientInfo)
{
var req = createRequest(); // defined above
// Create the callback:
req.onreadystatechange = function() {
if (req.readyState !== 4)
return; // Not there yet
if (req.status !== 200) {
// Handle request failure here...
return;
}
// Request successful, read the response
var resp = req.responseText;
// ... and use it as needed by your app.
};
var url = '/ui/webresources/signup';
post(req, clientInfo, url);
}
function mark(clientInfo)
{
var req = createRequest(); // defined above
// Create the callback:
req.onreadystatechange = function() {
if (req.readyState !== 4)
return; // Not there yet
if (req.status !== 200) {
// Handle request failure here...
return;
}
// Request successful, read the response
var resp = req.responseText;
// ... and use it as needed by your app.
};
var url = '/ui/webresources/mark';
post(req, clientInfo, url);
}
function smaInitGetIp()
{
var req = createRequest(); // defined above
// Create the callback:
req.onreadystatechange = function() {
if (req.readyState !== 4) {
return; // Not there yet
}
if (req.status !== 200) {
// Handle request failure here...
return;
}
// Request successful, read the response
var resp = req.responseText;
// ... and use it as needed by your app.
var clientInfo = createClientRecord(resp);
mark(clientInfo);
};
var url = '/ui/webresources/ip';
req.open("GET", url, true);
req.send();
}
function smaSignUpGetIp()
{
var req = createRequest(); // defined above
// Create the callback:
req.onreadystatechange = function() {
if (req.readyState !== 4) {
return; // Not there yet
}
if (req.status !== 200) {
// Handle request failure here...
return;
}
// Request successful, read the response
var resp = req.responseText;
// ... and use it as needed by your app.
var clientInfo = createClientRecord(resp);
signUp(clientInfo);
};
var url = '/ui/webresources/ip';
req.open("GET", url, true);
req.send();
}
function smaInit()
{
var temp = getUrlVars()["said"];
if (temp === null || temp === 'undefined')
{
//a social advertiser did not send them here
return;
}
smaInitGetIp();
}
function smaSignUp()
{
//get the id, if id isnt present, send null
var temp = getUrlVars()["said"];
if (temp === null || temp === 'undefined')
{
temp = null;
}
smaSignUpGetIp();
}