私の解決策は、onClick イベントを使用して PHP ページを呼び出し、パラメーターを投稿し、AJAX を使用して結果を返すことです。指定した URL を使用して PHP ページを呼び出すときに、パラメーターを挿入します。これが私のJavascriptです:
function uploadContact() {
var name, email, phone, badgeid;
if(window.localStorage.length > 0)
{
name = window.localStorage.getItem('name');
email = window.localStorage.getItem('email');
phone = window.localStorage.getItem('phone');
}
else
{
name = $('input[name=fullname]').val();
email = $('input[name=email]').val();
phone = $('input[name=phone]').val();
}
$.ajax({
url: 'UpdateContactList.php?name=' + name + '&email=' + email + '&phone=' + phone,
type: $form.attr('method'),
dataType: 'json',
success: function(responseJson) {
$form.before("<p>"+responseJson.message+"</p>");
},
error: function() {
$form.before("<p>There was an error processing your request.</p>");
}});
}
パラメータを取得するための私のPHPコード:
<?php
$response = array();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// if form has been posted process data
// you dont need the addContact function you jsut need to put it in a new array
// and it doesnt make sense in this context so jsut do it here
// then used json_decode and json_decode to read/save your json in
// saveContact()
$data = array( 'fullname' => $_POST['name'], 'email' => $_POST['email'], 'phone' => $_POST['phone']);
//These line is for testing only, remove it when done testing
$test = $_POST['name'] . ' ' . $_POST['email'];
echo "<script>alert('$test');</script>";
// always return true if you save the contact data ok or false if it fails
$response['status'] = updateContact($data) ? 'success' : 'error';
$response['message'] = $response['status']
? 'Your submission has been saved!'
: 'There was a problem saving your submission.';
header("Content-type: application/json");
echo json_encode($response);
exit;
}
...
function updateCacheFile($filename)
{
$filename = "contact";
$filename = $filename . ".appcache";
$cachefile = fopen ($filename, "a+");
....
file_put_contents($filename, $cache_content);
}
2 つの問題に注意してください。
ブラウズ アドレス リンクからのパラメータを使用して直接 PHP ページを呼び出すことができますが、何も返されません。普通ですか?
JavaScript から呼び出します。テスト ライン (アラート メッセージ ボックスを呼び出す) は機能せず、メッセージは表示されません。しかし、キャッシュ ファイルはまだ更新されています。つまり、PHP ページが呼び出され、ファイルの書き込みなどを行います。
この PHP ページに書き込むファイルは 2 つあります。どちらも正しく記述されていますが、パラメーターは表示されず、メッセージ ボックスも表示されません。
ここで何がうまくいかなかったのか教えてください。
P/S: 細部、スペースを含むパラメーターは正しく渡すことができますか? ユーザーが「Bill Jobs」などのフルネームを入力することを期待していたからです。
Stackoverflow コミュニティに感謝します。