2011-06-23 7 views
0

Как я могу сделать эту работу? Я хочу загрузить файл php следующим образом:Загрузить файл PHP с document.createElement()

  • Нажмите кнопку.
  • Вызов функции Javascript.
  • В функции Javascript создайте img с src file.php.

Это должно привести к загрузке php. Вот код.

<script type="text/javascript"> 
var d; 

function callSave() { 
alert ('calling'); 
if (d) document.body.removeChild(d); 
// d = document.createElement("script"); 
d = document.createElement("img"); 
d.src = "savepages.php"; 
//d.type = "text/javascript"; 
document.body.appendChild(d); 
} 

</script> 

Тогда в savepages.php я еще предупреждение, чтобы убедиться, что PHP называется, и это не так. Вот savepages.php.

<?php 
echo "alert('from the php');"; 
?> 

Предупреждение от php не происходит. Есть ли другой тип элемента, который будет принудительно загружать php? У меня нет ajax, поэтому мне нужно обходное решение, подобное этому.

Спасибо.

+2

Почему и какова ваша конечная цель? –

+0

Попытка вызвать оповещение внутри источника, который вы поставляете для изображения, не будет работать. Если вы просто хотите изображение, то ваш php должен установить правильные заголовки и вернуть только данные изображения. – scunliffe

+0

Как насчет iframe? – Martine

ответ

0

обнаружили лучший способ справиться с этим. Существует такой простой код, который объясняет, как вызвать функцию javascript из события формы и из этой функции javascript загрузить файл PHP. Код найден в http://daniel.lorch.cc/docs/ajax_simple/ также приводится здесь:

<script type="text/javascript"> 
var http = false; 

if(navigator.appName == "Microsoft Internet Explorer") { 
    http = new ActiveXObject("Microsoft.XMLHTTP"); 
} else { 
    http = new XMLHttpRequest(); 
} 

function validate(user) { 
    http.abort(); 
    http.open("GET", "validate.php?name=" + user, true); 
    http.onreadystatechange=function() { 
    if(http.readyState == 4) { 
     document.getElementById('msg').innerHTML = http.responseText; 
    } 
    } 
    http.send(null); 
} 
</script> 

<h1>Please choose your username:</h1> 

<form> 
    <input type="text" onkeyup="validate(this.value)" /> 
    <div id="msg"></div> 
</form> 

validate.php

<?php 
function validate($name) { 
    if($name == '') { 
    return ''; 
    } 

    if(strlen($name) < 3) { 
    return "<span id=\"warn\">Username too short</span>\n"; 
    } 

    switch($name) { 
    case 'bob': 
    case 'jim': 
    case 'joe': 
    case 'carol': 
     return "<span id=\"warn\">Username already taken</span>\n"; 
    } 

    return "<span id=\"notice\">Username ok!</span>\n"; 
} 

echo validate(trim($_REQUEST['name'])); 
?> 
+0

Другой вариант - иметь файл PHP в форме action

...
. Файл savepages.php вызывается при отправке формы. – Martine

0

Вы можете использовать IFrame элемент

<script type="text/javascript"> 
var d; 

function callSave() { 
alert ('calling'); 
if (d) document.body.removeChild(d); 
d = document.createElement("iframe"); 
d.src = "savepages.php"; 
document.body.appendChild(d); 
} 

</script> 
+0

Это имеет смысл, но это не вызывает оповещение php. – Martine

+0

Похоже, что iframe более подходит. Кто-нибудь знает, что еще может быть неправильно с этим кодом, который мог бы объяснить, почему php не вызывается. Я больше не пытаюсь сделать предупреждение. Я только пытаюсь сделать текстовое эхо. The savepages.php теперь имеет: Martine