ここであなたの助けと知識を求めるのは初めてです!AJAXスクリプトに問題があり、XMLからファイルをダウンロードするための「if」条件を追加しています。
一般に、スクリプト自体は機能しますが、何らかの方法で追加する必要のある関数'if'はありません。私はグーグルで助けを探していましたが、結果はありませんでした:(よく理解していれば、条件'IF、ELSE'が追加されたはずですが、これを行う方法がわからないので、これであなたの助けを本当に感謝します。私のためにこのコードを助けて追加することができました私は非常に感謝しています!
// this is not active now becouse i don't use this xml file
$(document).ready(function() {
$.ajax({
type: "GET",
url: "premier-rates.xml",
dataType: "xml",
success: parseXml
});
// this is my XML file
$.ajax({
type: "GET",
url: "go-rates.xml",
dataType: "xml",
success: parseXml_go
});
$("#selCountry").change(onSelectChange);
$("#selCountry_go").change(onSelectChange_go);
});
function gup(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);
if (results == null) return "";
else return results[1];
}
function parseXml(xml) {
$(xml).find("db_rates").each(function() {
var this_countryname = $(this).find("country").text();
var this_id = $(this).find("id").text();
var curOption = $("<option value='" + this_id + "'>" + this_countryname + "</option>")
curOption.data("db_rates", $(this)); // bind the country node data from the XML to the option of the dropdown
$(curOption).appendTo($('#selCountry'))
});
}
function onSelectChange() {
var selected = $('#selCountry').children(':selected').data('db_rates');
$('#rates_output').html("");
var this_country = $(selected).find('country').text();
var this_landlineRates = $(selected).find('landline_rates');
var this_mobileRates = $(selected).find('mobile_rates');
$("#rates_output").append("<p class='dest_title'>" + this_country + "</p>");
$("#rates_output").append("<ul><li><div class='dest_list'>Landline</div><div class='dest_list'>" + this_landlineRates.text() + "p /min</div><div class='clear'></div></li><li><div class='dest_list'>Mobile</div><div class='dest_list'>" + this_mobileRates.text() + "p /min</div><div class='clear'></div></li></ul>");
//$("#rates_output").append("Landline: " + this_landlineRates.text() + "p /min<br /> Mobile: " + this_mobileRates.text() +"p /min");
this_country = this_country.replace(/ /gi, "-");
var flagoutput = "";
var this_id = gup('id');
if (this_id == "1") {
flagoutput = "<img src='images/flag/" + this_country + ".png' style='float:right; border:1px solid #CCC; margin-right:10px; ' />";
} else {
flagoutput = "<img src='images/flag/" + this_country + ".png' style='float:left; border:1px solid #CCC; ' />";
}
$("#flagoutput").html(flagoutput);
}
function parseXml_go(xml) {
$(xml).find("db_rates").each(function() {
var this_countryname = $(this).find("country").text();
var this_id = $(this).find("id").text();
var curOption = $("<option value='" + this_id + "'>" + this_countryname + "</option>")
curOption.data("db_rates", $(this)); // bind the country node data from the XML to the option of the dropdown
$(curOption).appendTo($('#selCountry_go'))
});
}
function onSelectChange_go() {
var selected = $('#selCountry_go').children(':selected').data('db_rates');
$('#rates_output_go').html("");
var this_country = $(selected).find('country').text();
//THOSE TWO VARIABLE ARE ALWAYS LOADED
var this_landlineRates = $(selected).find('landline_rates');
var this_mobileRates = $(selected).find('mobile_rates');
// THOSE VARIABLES I WOULD LIKE TO ADD TO MY WEBSITE (DEPENDS ON HOW MANY OPERATORS ARE IN THE COUNTRY... SO IT CAN BE: this_mobileRatesC, D, E...
var this_mobileRatesA = $(selected).find('mobile_ratesA');
var this_mobileRatesB = $(selected).find('mobile_ratesB');
// AGAIN - THOSE TWO VARIABLES ARE ALWAYS LOADED
$("#rates_output_go").append("<p class='dest_title'>" + this_country + "</p>");
$("#rates_output_go").append("<ul><li><div class='dest_list'>Landline</div><div class='dest_list'>" + this_landlineRates.text() + "p /min</div><div class='clear'></div></li><li><div class='dest_list'>Mobile</div><div class='dest_list'>" + this_mobileRates.text() + "p /min</div><div class='clear'></div></li></ul>");
// SO I WAS TRYING TO ADD MY CODE, BUT I THINK SOMETHING IS WRONG AS IT ALWAYS SHOWS VALUE EVEN IF THE VALUE IS 0 OR DOES NOT EXIST IN MY XML FILE (it will be more for this_mobileRatesB, C, D...)
var this_mobileRatesA = $(selected).find('mobile_ratesA');
if ('mobile_ratesA' >= "0") {
$("#rates_output_go").append("<ul><li><div class='dest_list'>A</div><div class='dest_list'>" + this_mobileRatesA.text() + "p /min</div><div class='clear'></div></li></ul>");
// for more added this_mobileRatesB
var this_mobileRatesA = $(selected).find('mobile_ratesA');
if ('mobile_ratesB' >= "0") {
$("#rates_output_go").append("<ul><li><div class='dest_list'>A</div><div class='dest_list'>" + this_mobileRatesB.text() + "p /min</div><div class='clear'></div></li></ul>");
this_country = this_country.replace(/ /gi, "-");
var flagoutput = "";
/* */
var this_id = gup('id');
if (this_id == "1") {
flagoutput = "<img src='images/flag/" + this_country + ".png' style='float:right; border:1px solid #CCC;margin-right:10px; ' />";
} else {
flagoutput = "<img src='images/flag/" + this_country + ".png' style='float:left; border:1px solid #CCC; ' />";
}
$("#flagoutput").html(flagoutput);
}
}
}
注意:コメントは、この投稿を明確にするためにのみ追加されました
XMLファイルpremier-rates.xml
<?xml version="1.0" encoding="utf-8" ?>
<Rates>
<db_rates>
<id>1</id>
<country>country1</country>
<landline_rates>0.10</landline_rates>
<mobile_rates>0.15</mobile_rates>
<mobile_ratesA>0.50</mobile_ratesA> // I WONT IF HAVE VALUE IS APPENDED
<mobile_ratesB></mobile_ratesB> // I WONT IF 0 OR EMPTY IS NOT APPENDED
</db_rates>
<db_rates>
... // MORE COUNTRIES
</db_rates>
...
</Rates>
問題を解決するのを手伝ってくれませんか。もっと良い方法があるかもしれないので、必ずしも私がこれをやろうとしていた方法ではありません。私はどんな助けとアドバイスにも感謝します。
どうもありがとう