我有一個執行計算的java-script函數。我想在我的php代碼中使用該計算的答案。執行java腳本並在我的php查詢中使用結果
document.write(Fixed((PoissonTerm(X, Y)),8,4))
兩個值X和Y來自變量我的PHP代碼,以便
<?php
$valueofx;
$valueofy;
?>
在理想世界中,我想看起來像這樣
<?php
$thejavascriptvalue = document.write(Fixed((PoissonTerm($valueofx, $valueofy)),8,4))
?>
我知道這沒有做,我有5個不同的價值,我需要拉和使用。無論如何我可以解決它嗎?我不介意刷新頁面或從其他頁面抓取它,只要我可以在我的PHP代碼中使用5個值。
我需要重定向像
document.write(Fixed((PoissonTerm(0.1, 0)),8,4))
document.write(Fixed((PoissonTerm(8, 2)),8,4))
document.write(Fixed((PoissonTerm(6, 3)),8,4))
如果下面的JavaScript
function Fixed(s, wid, dec) {
// many combinations of possibilities
// maybe prepare for upcoming truncate
var z = 1
if (dec > 0) {
z /= Math.pow(10, dec);
if (s < -z) s -= 0.5 * z;
else
if (s > z) s += 0.5 * z;
else
s = 0;
}
// assure a string
s = "" + s;
// chop neg, if any
var neg = 0;
if (s.charAt(0) == "-") {
neg = 2;
s = s.substring(1, s.length);
}
// chop exponent, if any
var exp = "";
var e = s.lastIndexOf("E");
if (e < 0) e = s.lastIndexOf("e");
if (e > -1) {
exp = s.substring(e, s.length);
s = s.substring(0, e);
}
// if dec > 0 assure "."; dp == index of "."
var dp = s.indexOf(".", 0);
if (dp == -1) {
dp = s.length;
if (dec > 0) {
s += ".";
dp = s.length - 1;
}
}
// assure leading digit
if (dp == 0) {
s = '0' + s;
dp = 1;
}
// not enough dec pl? add 0's
while ((dec > 0) && ((s.length - dp - 1) < dec))
s += "0";
// too many dec pl? take a substring
var places = s.length - dp - 1;
if (places > dec)
if (dec == 0)
s = s.substring(0, dp);
else
s = s.substring(0, dp + dec + 1);
// recover exponent, if any
s += exp;
// recover neg, if any
if (neg > 0)
s = "-" + s;
// if not enough width, add spaces IN FRONT
// too many places? tough!
while (s.length < wid)
s = " " + s;
return s
}
function Prb(x) {
if (x < 0) x = 0;
else
if (x > 1) x = 1;
return x;
}
function PosV(x) {
if (x < 0) x = -x;
return x;
}
// FACTORIALS
function Fact(x) {
// x factorial
var t=1;
while (x > 1)
t *= x--;
return t;
}
function LnFact(x) {
// ln(x!) by Stirling's formula
// see Knuth I: 111
if (x <= 1) x = 1;
if (x < 12)
return Math.log(Fact(Math.round(x)));
else {
var invx = 1/x;
var invx2 = invx * invx;
var invx3 = invx2 * invx;
var invx5 = invx3 * invx2;
var invx7 = invx5 * invx2;
var sum = ((x + 0.5) * Math.log(x)) - x;
sum += Math.log(2*Math.PI)/2;
sum += (invx/12) - (invx3/360);
sum += (invx5/1260) - (invx7/1680);
return sum;
}
}
// POISSON
function PoissonPD(u, k) {
// Peizer & Pratt 1968, JASA 63: 1416-1456
var s = k + (1/2);
var d1 = k + (2/3) - u;
var d2 = d1 + 0.02/(k+1);
var z = (1 + g(s/u))/u;
z = d2 * Math.sqrt(z);
z = NormalP(z);
return z;
}
function PoissonTerm(u, k) {
// by logs
return Math.exp((k * Math.log(u)) - u - LnFact(k));
}
function PoissonP(u, k) {
// term-by-term summation
if (k >= 20) return PoissonPD(u, k);
else {
var sum = 0.0, j = 0;
while (j <= k)
sum += PoissonTerm(u, j++);
if (sum > 1) sum = 1;
return sum;
}
}
function DoPoi(aform) {
var u = PosV(parseFloat(aform.u.value));
aform.u.value = Fixed(u,10,4);
var k = PosV(parseInt(aform.k.value));
aform.k.value = Fixed(k,8,0);
aform.tnk.value = Fixed(PoissonTerm(u, k),8,4);
var t = PoissonP(u, k);
aform.puk.value = Fixed(t,8,4);
aform.quk.value = Fixed(1-t,8,4);
}
您可以使用AJAX調用將這些值發送到PHP頁面,讓頁面處理並執行任何操作,並且JavaScript將攔截結果。 – durbnpoisn
您也可以通過生成一個新的URL並將這些變量作爲$ _GET參數發送,從而將值發送給PHP。或者,您可以使用這些值創建表單並將其作爲$ _POST提交給PHP。 – durbnpoisn
或者你也可以重寫php中的等價函數,如果他們實際上不依賴於客戶端的交互 – Steve