2015-10-28 2 views
2

Я сделал небольшой скрипт AJAX для своего сайта, который выполняет PHP-скрипт в другом файле при отправке. Мне удалось воспроизвести результат в исходном файле с помощью функции AJAX, но мне не удалось перенести переменную из файла php в исходную.Возвращает переменную php?

Мне нужна эта переменная, чтобы добавить слушателя событий, который будет искать изменения в этой конкретной переменной (не уверен, как это сделать).

+0

К тому времени, вы делаете вызов Аякса HEJ .php, '$ show' уже объявлен и интерпретирован на' forsok.php', и уже слишком поздно. Возможно, если бы вы показали нам, как вы планируете использовать '$ show', мы могли бы выяснить, что вам действительно нужно делать. – Zsw

ответ

1

Вот то, что вы ищете это работает: - Поместите это в forsok.php

<div id="input"> 
<input type="text" id="number" name="value"> 
<b id="show_result"></b> 
</div>` 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
$('#number').on('keyup',function(e){ 
if(e.which == 13){ 
var get_var_name = $(this).val(); 
$.get('result.php',{number:get_var_name},function(data,status){ 
if(status == 'success'){ 
alert(data['show']); 
$('#show_result').text(data['show']); 
}else{ 
alert('Nothing'); 
} 
}); 
} 
}); 
</script> 

Для hej.php: -

<?php 


$one=$_GET['number']; 
if(empty($one)) { 
    echo "Can't be blank"; 
    $a['result']='null'; 
    $a['error'] = 'No value!!'; 
} else { 
    if(is_numeric($one)) { 
     $show=$one*2; 
     $arr = array(
     'show'=>$show 
     ); 
     header('Content-Type:application/json'); 
     echo json_encode($arr); 
     exit(); 
     // echo $show; 
    } else { 
     echo "NaN"; 
     $a['result']='null'; 
     $a['error']='nan'; 
    } 



} 
?> 
+0

Вы можете попробовать JSON.stringify (array) для кодирования вашего массива в JavaScript, а затем использовать $ array = json_decode ($ _ POST ['jsondata']); в вашем скрипте PHP, чтобы получить его. см. это, если это полезно. – Himanshu

+0

yes Использовать JSON.stringify внутри скрипта в forsok.php и использовать $ array = json_decode в вашем файле hej.php и сообщить мне, если он работает. – Himanshu

1

Сначала создайте массив того, что должно быть выходом. JSON кодирует этот массив, а затем вы можете анализировать выходные данные в обработчике успеха ajax. Как и в РНР выходной файл, как:

echo json_encode(array(
    'result' => 'null', 
    'error' => 'nan' 
)); 

Тогда в вас АЯКС успех превратить JSON в объект и анализировать данные, как вы хотите:

success: function (data, textStatus, jqXHR) { 
    var obj = $.parseJSON(data); 
    $('#utmatning').html(obj.result); // result value from your json return 
    $('#utmatning').append(obj.error); // error value from your json return 
} 
1

В последний из файла PHP, добавить,

json_encode($a); 

В АЯКС успеха

success: function(html) { 
    $.each(html, function(index, element) { 
     alert(element.result); 
     alert(element.error); 
     //append to which ever div you want. 
    }); 
} 

Теперь вы можете получить n количество индексов массива от php

1

Вместо того, чтобы повторять строки здесь и там в hej.php, возможно, лучше вернуть данные JSON в ваш вызов ajax. поэтому вы можете оценить, произошла ли ошибка, какая ошибка или какой действительный результат был возвращен.

hej.php:

<?php 
    $one=$_GET['value']; 
    if(empty($one)) { 
     $a['result']='null'; 
     $a['error'] = 'No value!!'; 
    } else { 
     if(is_numeric($one)) { 
      $a['result']=$one*2; 
      $a['error']='ok'; 
     } else { 
      $a['result']='null'; 
      $a['error']='nan'; 
     } 
    } 
    die(json_encode ($a)); 
?> 

если $ значение было 1, что бы вернуть

{"result":"2","error":"ok"} 

В forsok.php можно проверить reults и действовать соответственно

... 
$.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: url, 
    data: $("#idForm").serialize(), // serializes the form's elements. 
    success: function(response) 
    { 
     if (response.error=='ok'){ 
      $('#utmatning').html(response.result); // show response from the php script. 
     } 
     else{ 
      console.log(response.result); // handle the error 
     } 
    } 
}); 
... 

С уважением , Стефан

Смежные вопросы