How can I pass null PHP variable to javascript?
My code is as:
<?php
$size = null;
<< Call Rest API >>
if (<some_condition_here>) {
$size = <rest_api_value>;
}
echo "<input name='diff_size' id='diff_limit' type='test' value='$size' />";
<script>
var initial_value = $size
function checkIfChanged() {
if ($('diff_size').val() == initial_val )
{
return false;
}
return true;
}
</script>
?>
<< On submit javascript function is called >>
Error message:
Uncaught SyntaxError: Unexpected token ;
var initial_value = ;
<?php
$size = null;
<< Call Rest API >>
if (<some_condition_here>) {
$size = <rest_api_value>;
}
echo "<input name='diff_size' id='diff_limit' type='test' value='$size' />";
?>
<script>
var initial_value = '<?= $size ?>';
function checkIfChanged() {
if ($('diff_size').val() == initial_val )
{
return false;
}
return true;
}
</script>
Related
I have these code, which stores the php variable to a global javascript variable. All the modules are in same file, but still I get an Uncaught SyntaxError: Unexpected token <, at the rowNum1's line:-
<script type="text/javascript">
var glo = 0;
var rowNum = <?php echo $_GET['SN'];?>;
var newnames = new Array();
var rowNum1 = "";
var tempVal = "";
var destTextarea = "";
newnames=<?php echo json_encode($userinfoarr); ?>; //This varaible initialisation works fine
function fetchNext(){
if (glo++ === 0)
{
if(rowNum < newnames.length)
{
document.getElementById("Txt0").value = rowNum;
document.getElementById("Txt1").value = newnames[rowNum];
tempVal = newnames[rowNum];
}
rowNum++;
}
else
{
rowNum1=<?php echo json_encode($sln); ?>; //This one throws an Uncaught Syntax error
if(rowNum1 < newnames.length)
{
document.getElementById("Txt0").value = rowNum1;
document.getElementById("Txt1").value = newnames[rowNum1];
tempVal = newnames[rowNum1];
}
rowNum1++;
console.log("test");
}
}
</script>
This is the php code for $sln:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['Txt0']))
{
$sln = $_POST['Txt0'];
}
}
?>
This is the php code for $userinfoarr
<?php
require_once('config.php');
$result = mysqli_query($conn, "SELECT tweet from tweet");
$userinfoarr = array();
while ($row_user = mysqli_fetch_array($result,MYSQLI_ASSOC))
{
$userinfo = $row_user["tweet"];
$push=array_push($userinfoarr, $userinfo);
}
?>
COuld anybody help me out with this, as I am unable here to understand the scenario?
Here is a screenshot of the error inside browser
change your php code as below. assign $sln default value
<?php
$sln = ""; //<---- assign default value to $sln
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['Txt0']))
{
$sln = $_POST['Txt0'];
}
}
?>
Do something like this
Modify $sln code as
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['Txt0']))
{
$sln = $_POST['Txt0'];
echo "<script type='text/javascript'>var sln='$sln'</script>";
}
}
?>
and in script
{
rowNum1 = sln; //
if(rowNum1 < newnames.length)
{
document.getElementById("Txt0").value = rowNum1;
document.getElementById("Txt1").value = newnames[rowNum1];
tempVal = newnames[rowNum1];
}
rowNum1++;
console.log("test");
}
Use single quote for PHP code:
var rowNum = '<?php echo $_GET['SN'];?>';
When I pass data into my file upload controller, it is giving an error of undefined offset: 1.
function TestFileUpload() {
$i=0;
if(!isset($_FILES[$i]) ) {
echo "No file is being uploaded";
}
else {
$x = $_FILES[$i]['name'];
$xx = explode('.', $x);
$config['upload_path'] = 'MRS-files\Upload_files';
$config['allowed_types'] = 'xls|doc|jpg|png|gif|pdf';
$this->load->library('upload',$config);
$count = count($_FILES[$i]['name']). ' ';
while ($i <= 4 )
{
echo $count;
$x = $_FILES[$i]['name'];
$xx=explode(".", $x);
echo $_FILES[$i]['name'].' '.$_FILES[$i]['type'].' '.$_FILES[$i]['size'] ;
$this->upload->initialize($config);
$_FILES['up']['name'] = $_FILES[$i]['name'];
$_FILES['up']['tmp_name'] = $_FILES[$i]['tmp_name'];
$_FILES['up']['type'] = $_FILES[$i]['type'];
$_FILES['up']['size'] = $_FILES[$i]['size'];
if ( ! $this->upload->do_upload('up')) {
//error on uploading
echo str_replace('','',$this->upload->display_errors()); //temporary commented no use cause of redirect to homepage
//$this->cancelREC();
exit();
}
else{
$data = array('upload_data' => $this->upload->data());
$this->new_development_model->insertonAttachments($data['upload_data']);
$i++;
}
}
}
}
It's probably related cause you need to check in your loop if $_FILES[$i] is defined.
You do this but only one time, when $i = 0.
I even think that if you check in the loop, you wont need to do
if(!isset($_FILES[$i]) ) {
echo "No file is being uploaded";
}
else { /*...*/ }
before the loop
I'm trying to create a gameserver query for my website, and I want it to load the content, save it, and echo it later. However, it doesn't seem to be echoing. It selects the element by ID and is supposed to echo the content of the VAR.
Here's my HTML code:
<center><div id="cstrike-map"><i class="fa fa-refresh fa-spin"></i> <b>Please wait ...</b><br /></div>
JavaScript:
<script type="text/javascript">
var map = "";
var hostname = "";
var game = "";
var players = "";
$.post( "serverstats-cstrike/cstrike.php", { func: "getStats" }, function( data ) {
map = ( data.map );
hostname = ( data.hostname );
game = ( data.game );
players = ( data.players );
}, "json");
function echoMap(){
document.getElementByID("cstrike-map");
document.write("<h5>Map: " + map + "</h5>");
}
</script>
PHP files:
query.php
/* SOURCE ENGINE QUERY FUNCTION, requires the server ip:port */
function source_query($ip)
{
$cut = explode(":", $ip);
$HL2_address = $cut[0];
$HL2_port = $cut[1];
$HL2_command = "\377\377\377\377TSource Engine Query\0";
$HL2_socket = fsockopen("udp://".$HL2_address, $HL2_port, $errno, $errstr,3);
fwrite($HL2_socket, $HL2_command); $JunkHead = fread($HL2_socket,4);
$CheckStatus = socket_get_status($HL2_socket);
if($CheckStatus["unread_bytes"] == 0)
{
return 0;
}
$do = 1;
while($do)
{
$str = fread($HL2_socket,1);
$HL2_stats.= $str;
$status = socket_get_status($HL2_socket);
if($status["unread_bytes"] == 0)
{
$do = 0;
}
}
fclose($HL2_socket);
$x = 0;
while ($x <= strlen($HL2_stats))
{
$x++;
$result.= substr($HL2_stats, $x, 1);
}
$result = urlencode($result); // the output
return $result;
}
/* FORMAT SOURCE ENGINE QUERY (assumes the query's results were urlencode()'ed!) */
function format_source_query($string)
{
$string = str_replace('%07','',$string);
$string = str_replace("%00","|||",$string);
$sinfo = urldecode($string);
$sinfo = explode('|||',$sinfo);
$info['hostname'] = $sinfo[0];
$info['map'] = $sinfo[1];
$info['game'] = $sinfo[2];
if ($info['game'] == 'garrysmod') { $info['game'] = "Garry's Mod"; }
elseif ($info['game'] == 'cstrike') { $info['game'] = "Counter-Strike: Source"; }
elseif ($info['game'] == 'dod') { $info['game'] = "Day of Defeat: Source"; }
elseif ($info['game'] == 'tf') { $info['game'] = "Team Fortress 2"; }
$info['gamemode'] = $sinfo[3];
return $info;
}
cstrike.php
include('query.php');
$ip = 'play1.darkvoidsclan.com:27015';
$query = source_query($ip); // $ip MUST contain IP:PORT
$q = format_source_query($query);
$host = "<h5>Hostname: ".$q['hostname']."</h5>";
$map = "<h5>Map: ".$q['map']."</h5>";
$game = "<h5>Game: ".$q['game']."</h5>";
$players = "Unknown";
$stats = json_encode(array(
"map" => $map,
"game" => $game,
"hostname" => $host,
"players" => $players
));
You need to display the response in the $.post callback:
$.post( "serverstats-cstrike/cstrike.php", { func: "getStats" }, function( data ) {
$("#map").html(data.map);
$("#hostname").html(data.hostname);
$("#game").html(data.game);
$("#players").html(data.players);
}, "json");
You haven't shown your HTML, so I'm just making up IDs for the places where you want each of these things to show.
There are some things that I can't understand from your code, and echoMap() is a bit messed up... but assuming that your php is ok it seems you are not calling the echomap function when the post request is completed.
Add echoMap() right after players = ( data.players );
If the div id you want to modify is 'cstrike-map' you could use jQuery:
Change the JS echoMap to this
function echoMap(){
$("#cstrike-map").html("<h5>Map: " + map + "</h5>");
}
So what I did was I had to echo the content that I needed into the PHP file, then grab the HTML content and use it.
That seemed to be the most powerful and easiest way to do what I wanted to do in the OP.
<script type="text/javascript">
$(document).ready(function(){
$.post("stats/query.cstrike.php", {},
function (data) {
$('#serverstats-wrapper-cstrike').html (data);
$('#serverstats-loading-cstrike').hide();
$('#serverstats-wrapper-cstrike').show ("slow");
});
});
</script>
PHP
<?php
include 'query.php';
$query = new query;
$address = "play1.darkvoidsclan.com";
$port = 27015;
if(fsockopen($address, $port, $num, $error, 5)) {
$server = $query->query_source($address . ":" . $port);
echo '<strong><h4 style="color:green">Server is online.</h4></strong>';
if ($server['vac'] = 1){
$server['vac'] = '<img src="../../images/famfamfam/icons/tick.png">';
} else {
$server['vac'] = '<img src="../../images/famfamfam/icons/cross.png">';
}
echo '<b>Map: </b>'.$server['map'].'<br />';
echo '<b>Players: </b>'.$server['players'].'/'.$server['playersmax'].' with '.$server['bots'].' bot(s)<br />';
echo '<b>VAC Secure: </b> '.$server['vac'].'<br />';
echo '<br />';
} else {
echo '<strong><h4 style="color:red">Server is offline.</h4></strong>';
die();
}
?>
I have the following code:
<script type='text/javascript' src='js/jquery.js'></script>
<script type='text/javascript'>
var last_song = '$song[1]';
var jqy = jQuery.noConflict()
var change_radio = setInterval(function ()
{
jqy.ajax({
url : 'modules/ajax/refresh.php',
type : 'GET',
data : {lastsong: 'last_song'},
success: function(data)
{
last_song = data;
jqy('#radio').html(last_song);
}
});
}, ($refresh*1000));
change_radio;
</script>
refresh.php
<?php
$lastsong = $_GET['lastsong'];
$timeout = "2"; // Number of seconds before connecton times out.
$ip[1] = "198.101.13.110"; // IP address of shoutcast server
$port[1] = "8000"; // Port of shoutcast server
//$song = [];
//$msg = [];
//END CONFIGURATION
$servers = count($ip);
$i = "1";
while ($i <= $servers)
{
$fp = #fsockopen($ip[$i], $port[$i], $errno, $errstr, $timeout);
if (!$fp)
{
$listeners[$i] = "0";
$msg[$i] = "<span class=\"red\">ERROR [Connection refused / Server down]</span>";
$error[$i] = "1";
}
else
{
fputs($fp, "GET /7.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");
while (!feof($fp)) $info = fgets($fp);
$info = str_replace('<HTML><meta http-equiv="Pragma" content="no-cache"></head><body>', "", $info);
$info = str_replace('</body></html>', "", $info);
$stats = explode(',', $info);
if (empty($stats[1]))
{
$listeners[$i] = "0";
$msg[$i] = "<span class=\"red\">ERROR [There is no source connected]</span>";
$error[$i] = "1";
}
else
{
if ($stats[1] == "1")
{
$song[$i] = $stats[6];
$listeners[$i] = $stats[4];
$max[$i] = $stats[3];
// Both IFs the same? Please check that and make one only if its the case
if ($stats[0] == $max[$i]) $msg[$i] = "<span class=\"red\">";
if ($stats[0] == $max[$i]) $msg[$i] .= "</span>";
}
else
{
$listeners[$i] = "0";
$msg[$i] = " <span class=\"red\">ERROR [Cannot get info from server]</span>";
$error[$i] = "1";
}
}
}
$i++;
}
if($song[1] != "")
{
echo $song[1];
exit();
}
echo uriencode($lastsong);
?>
And I want to change it to use prototype instead. I use prototype and jQuery already, and this is conflicting as written. I've no idea where to begin, but any assistance would be appreciated... especially since there are a lot of folks in my situation. Thanks so much.
My PHP
<?php
$from = $_POST['from'];
$to = $_POST['to'];
$word = $_POST['word'];
function strProper($str) {
$noUp = array('a','an','of','the','are','at','in');
$str = trim($str);
$str = strtoupper($str[0]) . strtolower(substr($str, 1));
for($i=1; $i<strlen($str)-1; ++$i) {
if($str[$i]==' ') {
for($j=$i+1; $j<strlen($str) && $str[$j]!=' '; ++$j); //find next space
$size = $j-$i-1;
$shortWord = false;
if($size<=1000) {
$theWord = substr($str,$i+1,$size);
for($j=0; $j<count($noUp) && !$shortWord; ++$j)
if($theWord==$noUp[$j])
$shortWord = true;
} else{
$str = substr($str, 0, $i+1) . strtoupper($str[$i+1]) . substr($str, $i+2);
}
}
$i+=$size;
}
return $str;
}
if(file_exists("$from-$to.txt")){
$file = file("$from-$to.txt", FILE_IGNORE_NEW_LINES);
} else{
$file = null;
}
$array = array();
$return = array();
if($file != null){
foreach($file as $line){
if(!empty($line)){
$words = explode("=", $line);
$results = explode("|", $words[1]);
$rest = explode("|", $words[1]);
array_shift($rest);
$array[$words[0]] = $results[0];
$final = strProper(strtr(strtolower($word), $array));
$final = trim($final);
} else{
$final = null;
}
}
$return['final'] = $final;
$return['others'] = $rest;
echo json_encode($return);
}
My AJAX Call:
$("#translate_word").keyup(function(e){
var from = $("#translate_from").val();
var to = $("#translate_to").val();
$("#translate_result").html($(this).val());
$.ajax({
type: "POST",
url: "translate.php",
data: {word: $(this).val(), from: from, to: to},
success: function(html){
if(html !== ""){
var obj = $.parseJSON(html);
console.log(obj);
$("#translate_result").text(obj.final);
if(typeof obj.others === 'object'){
$.each(obj.others, function(index, val){
$("#translate_others").html($("#translate_others").html() + val + "<br />");
});
} else{
$("#translate_others").html($("#translate_others").html() + obj.others + "<br />");
}
}
}
});
});
But when I run the function it says:
Uncaught SyntaxError: Unexpected token < jquery.min.js:4
n.parseJSON jquery.min.js:4
$.ajax.success (index):135
j jquery.min.js:2
k.fireWith jquery.min.js:2
x jquery.min.js:4
b
But whenever I remove the function strProper from the PHP on line 43 it doesn't throw the error and everything works.