webForumDet fria alternativet

PHP, Ajax, Jqury relodar inte div och kör inte ljudfilen

PHP

5 svar · 773 visningar · startad av dwmedia

Medlem sedan nov. 2006188 inlägg
Frågan#1

Så här ser min ajax ut.

function fetchPlaySound()
{
	$.ajax({
		method: "get",
		url: "../_scripts/ajax_play_sound.php",
		data: "",
		success: function(result) { $("#PlaySound").html(result); }
	});
		
	setTimeout('fetchPlaySound()', 1000);
}

Så här ser php koden ut.

<?php
include("../mysql.php");
 
$sql = "SELECT sms_sound, virtualnummer_nya FROM Users WHERE id = '{$_SESSION['sess_id']}'";
$result = mysql_query($sql, $conn);
while($row = mysql_fetch_array($result)) {
 
if ($row['sms_sound'] > "" AND $row['virtualnummer_nya'] > "0") {
echo "<embed src='../audio/{$row['sms_sound']}' autostart='true' width='1' height='1' id='sound1'></embed>";
} else {
// Inget
}
}
?>

sedan har jag diven så här

<div id='PlaySound'></div>

Det jag vill är när dem får ett inkommande SMS, då ska den spela upp ett förbestämd ljudfil eller ingen alls om dem inte väljer spela ljud.

Problemet är att den värka inte ens vilja börja spela eller göra något alls.
Säkert missad något simpelt som man löser med lite sömn, vi får se vem som löser det först :D

God natt alla och tack på förhand.

Medlem sedan juni 20019 519 inlägg
#2

Skriv aldrig en setTimeout på det sättet, kör aldrig eval!

Sen verkar det som du inte anropar din metod fetchPlaySound någon gång, sen vet jag inte om du vill hämta AJAX anropet varje sekund heller?

function fetchPlaySound() {
	$.ajax({
		method: "get",
		url: "../_scripts/ajax_play_sound.php",
		data: "",
		success: function(result) { $("#PlaySound").html(result); }
	});
}

setTimeout(fetchPlaySound, 1000);

Om du vill anropar din ajax metod efter en sekund.

Medlem sedan nov. 2006188 inlägg
#3

Jag vill att den kollar när det har inkommit ett SMS, folk får ingående SMS hela tiden.
Dock kommer den ju inte spela något sound så länge dem inte har fått något nytt meddelande. Tänkte i själva php sedan sätta den till noll efter leveransen så lär den nog inte spela igen.

Något åt det här hållet eller.

function fetchPlaySound() {
	$.ajax({
		method: "get",
		url: "../_scripts/ajax_play_sound.php",
		data: "",
		success: function(result) { $("#PlaySound").html(result); }
	});
}

setTimeout(fetchPlaySound, 10000);

$(document).ready(function(){
	fetchPlaySound();
	
	$("#sound-send").click(
		function()
		{
			$.ajax({
				method: "get",
				url: "../_scripts/ajax_play_sound.php",
				data: "username=" +	username + "&message=" + message,
				success: function(result) { $("#errsucc").html(result); }
			});
			
			$("#PlaySound").val("");
			
			return false;
		}
	);
});
Medlem sedan juni 20019 519 inlägg
#4

känns lite konstigt att du kör den varje sekund, ajax anropet kan ju ta längre än en sekund att hämta:

function fetchPlaySound() {
    $.ajax({
        method: "get",
        url: "../_scripts/ajax_play_sound.php",
        data: "",
        success: function(result) {
            $("#PlaySound").html(result);
            setTimeout(fetchPlaySound, 1000);
        }
    });
}
fetchPlaySound();

känns mer logiskt.

Medlem sedan nov. 2006188 inlägg
#5

Det har du rätt i, kanske kör den på var 20 sekund kanske, men skulle dem byta sida hela tiden så skulle den inte hinna genera ljudet.

Så finns det något bra lösning på det egentligen?

Medlem sedan juni 20019 519 inlägg
#6

Köra anropet efter att ajax anropet faktist har körts?

401 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
124 ms — deklarationer (db)
130 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)