返回php变量?

时间:2015-10-28 02:48:37

标签: javascript php jquery ajax

我为我的网站制作了一个小的AJAX脚本,它在提交时在另一个文件中执行一个php脚本。我设法用AJAX函数回显原始文件中的结果,但我还没有设法将变量从php文件传输到原始文件。

我需要这个变量才能添加一个事件监听器,它将查找该特定变量的变化(不知道如何做到这一点)。

4 个答案:

答案 0 :(得分:1)

首先创建一个应该是输出的数组。 JSON对该数组进行编码,然后您可以在ajax成功处理程序中解析输出。就像你的php文件输出一样:

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

然后在你的ajax成功中将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 :(得分:1)

在你的php文件的最后,添加,

json_encode($a);

在ajax的成功中,

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

现在有了这个,你可以从php

获得n个数组索引

答案 2 :(得分: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));
?>

如果$ value为1将返回

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

在forsok.php中,您可以查看结果并采取相应行动

...
$.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
        }
    }
});
...

此致 斯蒂芬

答案 3 :(得分:1)

以下是您正在寻找的工作: - 把它放在你的forsok.php

var myApp = angular.module("myApp", []);

myApp.controller("myController", function($scope){
    $scope.list = [];
    var item1 = {name:'Item 1',course:'test1'};
    var item2 = {name:'Item 2',course:'test2'};
    $scope.list.push(item1);
    $scope.list.push(item2);
    $scope.addMenuItemFun = function (item) {
       try {
         var itemToAdd = {
            name: item.name,
            course: item.course
         };
         $scope.list.push(itemToAdd);
       }
       catch(err) {
          alert(err);
       }
   };
});

myApp.directive('menuItemRepeater', function () {
    return {
        restrict: 'E',        
        template: '<div ng-repeat="item in list">{{item.name}}</div><add-menu-item courseText="courseText" add-item="addItemFunc()"></add-menu-item>',
        scope: {
            courseText: '@coursetext',
            addItemFunc: '&',
        }
    }
});
myApp.directive('addMenuItem', function(){
    return {
        retstrict: 'E',
        template: '<div class="form-group"><label for="name">Name of new item: </label><input ng-model="itemName" type="text" class="form-control" id="itemName" ><input ng-model="courseText" type="hidden" value="{{courseText}}" />            </div>                                 <button class="btn btn-default" ng-click="addNewItem1()">Submit</button>',        
        scope: {            
            courseText: '@couresetext',
            addItem: '&',
            itemName: '='
        },
        link: function (scope, $element) {                        
            scope.addNewItem1 = function () {                
                var newItem = {
                    name: scope.name,                                                                                
                    course: scope.courseText
                };
                scope.addItem({ item: newItem });
            };
        }
    }
});

对于hej.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>