将参数从php文件传递到javascript文件

时间:2014-10-04 04:59:50

标签: javascript php jquery

我在将一个简单的变量从php传递到javascript文件时遇到了一些麻烦。

我有一个表单通过php文件提交,它基本上更新了服务器端的记录。如果更新成功,我只想将消息传递回javascript,我可以在页面的某个部分更新它。

我的代码是:

Javascript代码 - abc.js

 function expand_cards(project, SlNo)
 {
    name = project['project_name'];
    j = "ShowForm-"+SlNo+"";

        s = "<div class='edit_project_card'>";
        s += "<form method='post' action='Edit_Project.php'><div class='project_form'>
        // Form Contents
        s += "<div class='Form_button'> <input type='submit'> </div>";
        s += "</form></div>";

    $("#"+j+"").html(s);
    response = $.parseJSON(data);
    $("#"+j+"").html(response);
}

PHP文件 - Edit_Project.php

<?php

//The updation stuff at the server end

if (!mysqli_query($connection,$sqlquery)) {
  $response = "'Error in your code: ' . mysqli_error($connection)";
}
else {
$response = "1 record updated";
}

echo json_encode($response);
mysqli_close($connection);
?>

但问题是屏幕正在打印$ response变量,并没有完全按照希望将其传递回javascript函数。我知道我可以使用$ .post函数,它可以接收参数,但它是一个很长的形式,并且传递参数很难。

有人可以帮助我吗?

由于

2 个答案:

答案 0 :(得分:1)

很脏,但它会起作用:

<script type="text/javascript">
 var my_var = <?php echo $some_variable; ?>
  // Do something with the new my_var
  some_func(my_var);

</script>

如果你能使用更好的AJAX,我不会做太多详细的事情。

请注意,这只适用于.php文件或正在读取的文件。

你会想要在php端做一些变量处理,因为如果字符串是空的,你最终会得到一个

var my_var = ;

会打破脚本。所以像:

var my_var = <?php echo "'" . $some_variable . "'";?>

如果它是一个字符串或者它是一个数字:

var my_var = <?php echo (empty($some_variable) ? null : $some_variable);

这是特定于int的,我相信你可以提出一个能更好地处理它的函数。

参考文献:

空函数http://php.net/manual/en/function.empty.php

http://davidwalsh.name/php-ternary-examples

的简写

答案 1 :(得分:0)

由于您直接将表单提交到PHP文件,因此浏览器会像正常页面一样加载Edit_Project.php文件。如果您希望对已加载的页面进行json响应,则必须使用$.post$.ajax

你可以简单地使用serialize()发布整个表单:

  $('#form_id').on('submit', function(e) {
    // Stop the browser from posting the form
    e.preventDefault();

    // Post the form via Ajax
    $.ajax({
      url : 'Edit_Project.php',
      type : 'POST',
      data : $(this).serialize(),
      success : function(response) {
        // Here you do the HTML update
        $("#"+j+"").html(response.reply);
      }
    });
  });

还需要更改Edit_Project.php:

//The updation stuff at the server end

if (!mysqli_query($connection,$sqlquery)) {
  $response = "'Error in your code: ' . mysqli_error($connection)";
}
else {
$response = "1 record updated";
}
mysqli_close($connection);

/*
 * As SuperDJ suggested, you need to tell the browser that it's
 * receiving a JSON ojbect although he did use the wrong content type:
 */
header('Content-Type: application/json');

/*
 * According to php.net most decoders should handle a simple string as
 * json object but to be safe always encode an array or an object since
 * you can't know how the decoder will respond.
 */
echo json_encode(array('reply' => $response));