我在wordpress中有一个页面,它使用jquery和ajax从外部api获取信息。表单将javascript中生成的数组发送回另一个变量,该变量是页面中的php用来确定要显示的页面。在wordpress之外,代码工作正常。在Wordpress内部运行第一部分,但之后不再加载同一页面,而是转到搜索页面并且没有找到任何内容。
输出的网址是:
http://kltools.net/?s=&post_type%5B%5D=portfolio&post_type%5B%5D=post&post_type%5B%5D=page
考虑到我使用post not get。这似乎很奇怪。
生成数组的javascript并提交表单:
function submitchans(){
for (var i=0;i<chans.length;i++)
{ var newHidInp = document.createElement('input');
newHidInp.type = 'hidden';
newHidInp.name = 'chans[]';
newHidInp.value = chans[i];
form.appendChild(newHidInp);
}
}
function livearray(input){
if (input != null) {
chans.push(input);
}
if (Y === cSize){
submitchans();
document.forms[0].submit();
}
}
以前数组是outArray []而不是chans [],我改变它认为可能会触发结果,但没有运气。
这是代码的PHP部分:
<?php
$page_to_load = $_POST[view];
switch($page_to_load) {
case '':
echo "<script src=\"../scripts/jquery-3.2.0.min.js\"></script>";
echo "<script type=\"application/javascript\" src=\"../scripts/raid.js\"></script>";
echo "<font size=\"+3\" color=\"#FFFFFF\">Who should I host?<br>Please wait while channel is selected<br></font>";
echo "<font size=\"+2\">";
echo "<br><br>";
echo "<img src=\"../_images/ajax_loader_blue_350.gif\">";
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$chanarray[] = null;
$offline = 0;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT `TwitchNames` FROM TK_Members WHERE Validated='1' AND RaidMe='1'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
array_push($chanarray, $row['TwitchNames']);
}
} else {
echo "0 results";
}
array_splice($chanarray, 0, 1);
$conn->close();
echo "<script type=\"application/javascript\">";
echo "var channels = ". json_encode($chanarray);
echo "</script>";
echo "</font>";
echo "<form id=\"form\" method=\"post\">";
echo "<input type=\"hidden\" name=\"view\" value=\"page2\">";
echo "</form>";
break;
case 'page2':
echo "<font size=\"+3\" color=\"#FFFFFF\">Who should I host?<br>";
echo "Your channel to host is:<br></font>";
echo "<font size=\"+2\">";
echo "<br><br>";
$chans[] = null;
$test = $_POST['chans'];
foreach ($test as $chan) {
$temparray = array(rand(),$chan);
array_push($chans, $temparray);
}
array_splice($chans,0,1);
sort($chans);
echo "<a href=\"https://twitch.tv/".$chans[0][1]."\" target=\"_blank\">".$chans[0][1]."</a>";
echo "<br><br><br>";
echo "<a href=\"whoslive.htm\" target=\"_parent\">See All Live Channels</a>";
echo "</font>";
break;
}
?>
在处理了blokeish建议的内容之后,我已经修改了javascript文件以解决问题所在。
新的javascript文件是:
// JavaScript Document
var chans = ["test1","test2","test3"];
function submitchans(){
for (var i=0;i<chans.length;i++)
{ var newHidInp = document.createElement('input');
newHidInp.type = 'hidden';
newHidInp.name = 'chans[]';
newHidInp.value = chans[i];
document.getElementById('chansform').appendChild(newHidInp);
}
}
jQuery(function ($) {
submitchans();
document.getElementById('chansform').submit();
});
仅使用javascript点击提交,它会转到下一页。在数组传递中添加时失败。这是在执行期间返回的页面日志。 !! - 更正 - !!代码中有一个拼写错误,在将ID改为Id之后,代码按预期工作。
答案 0 :(得分:1)
document.forms [0] .submit()可能会提交wp搜索表单,因为它可能是DOM中的第一个表单。我在网址中看到“http://kltools.net/? s = ”,其中“s”是搜索字词。
使用 document.getElementById('idOfForm')。如果页面中有多个表单,并且您无法确定其索引,则submit()可以解决该问题。