2014-10-04 90 views
0

我在将一个简单的变量从一个php传递给javascript文件时遇到了一些麻烦。从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); 
?> 

但问题是屏幕印刷$响应变量,因为它并没有完全按照希望将它传递回javascript函数。我知道我可以使用一个$ .post函数,它可以接收参数,但它是一个很长的形式,传递参数将会很困难。

有人可以帮我吗?

感谢

+0

你已经错过了'“;在''的s' – 2014-10-04 05:04:59

回答

0

由于您提交表单到PHP文件直接在浏览器加载Edit_Project.php文件,因为它会正常页http://php.net/manual/en/function.empty.php

简写。如果你想有一个JSON响应已加载的页面,你将不得不使用$.post$.ajax

你可以简单地通过序列化()这样的后整个形式:

 
    $('#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)); 
+1

谢谢。工作:) – newbie 2014-10-04 11:37:29

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://davidwalsh.name/php-ternary-examples

+0

第二个定义的结尾其实它不会在一个HTML文件的工作,它需要成为一个php文件,你可以通过在文件 – SuperDJ 2014-10-04 05:53:14

+0

的顶部添加'header('content-type:application/javascript')'来使用一个php文件作为javascript,因为他想把它放在一个dot.php文件中。 ,但是如果它是在.html文件中,那么是的。很好,赶上SuperDj! – 2014-10-17 23:04:56

相关问题