从已执行的JavaScript / jQuery函数中获取返回的变量

时间:2016-06-30 18:12:34

标签: javascript php jquery ajax

我有这个简单的代码作为PHP文件的一部分,这个代码的目的是在客户端执行job1.js文件(必须这样做),在这个文件中我有一个名为{{的函数1}}返回3个变量。必须将返回的变量传递给服务器以进行进一步的工作。

job1()

该函数正在执行而没有任何问题,它正在执行一些内部字符串操作(非常无聊:))并返回3个变量。

我的问题是如何从<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script type = "text/javascript" > $(document).ready(function() { // $jobJSPath[0] holds the path to the job1.js file var scriptPath = "<?php echo $jobJSPath[0]; ?>"; $.getScript(scriptPath, function(data, textStatus, jqxhr) { // Call the function job1(); window.alert( data ); // Data, actually it has only the content of the file as a string window.alert( textStatus ); // Success window.alert( jqxhr.status ); // 200 }); }); </script> 函数中获取3个返回变量并返回其输入。我搜索了很多,甚至尝试了

job1()

因为var result = eval('(' + data + ')'); console.log(result); 变量将函数保存为字符串但仍然没有成功,所以在此站点的其他页面上建议使用此选项。

编辑:datadata有相同的文字:

'function job1(){         var text =“”;         var vocabulary =“ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789”;

job1

}“

2 个答案:

答案 0 :(得分:3)

java脚本用于客户端,php用于服务器端,只需使用ajax调用并使用post传递数据,在job1()完成后你得到了返回的数组,只需使用这样的ajax调用:

var yourdata=job1();
var postdata= [{"1": yourdata[0], "2": yourdata[1], "3": yourdata[2]}];
    $.ajax({
    type: POST,
    data: postdata,
    url: "test.php", //stands for the php file you want to send the data to
    }).done(function() {
      //do something.....
    })

on the server side fetch the data using $_POST["1"] for example

答案 1 :(得分:0)

那就是我到现在为止所拥有的

<script type = "text/javascript" >
    $(document).ready(function() {
        // $jobJSPath[0] holds the path to the job1.js file
        var scriptPath = "<?php echo $jobJSPath[0]; ?>"; 
        $.getScript(scriptPath, function(data, textStatus, jqxhr) {
            // Call the function
            var job = job1();
            window.alert( data ); // Data, actually it has only the content of the file as a string
            console.log(job); // shows all the return parameters from job1();
            window.alert( textStatus ); // Success
            window.alert( jqxhr.status ); // 200
            //  push the return parameters into result array
            var result = [];
            $.each(job, function(index, value) {
                //window.alert(index + ": " + value);
                result.push(value);
            });
            // post the results back to the same page 
            $.ajax({        
            type: 'POST',
            data: {result : result},
            url: 'executedJobs.php',
            }).done(function(data) {
                var redirectUrl = "executedJobs.php";
                var form = $('<form action="' + redirectUrl + '" method="post">' +
                '<input type="hidden" name="result" value="'+ data +'" />' +
                '</form>');
                $('body').append(form);
                $(form).submit();
            });
        });
    });
</script>

然后在我使用的executedJobs.php页面上获得结果

<?php
$myArray = $_REQUEST['result'];
echo "myArray:<br/>";
print_r($myArray);
?>

它的工作原理是这样,唯一的一件事就是我myArray之前每次都会回复两次print_r($myArray);