2014-10-04 130 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