簡體   English   中英

使用Ajax調用觸發php腳本

[英]Trigger php script with ajax call

我想對一個php文件進行ajax調用; 最終,該php文件將寫入mongodb數據庫。 目前,我正在調試,並且希望打開php文件並寫入文本文件。 當我從命令行運行該php文件時,該文件有效。 類似地,ajax調用返回“成功”消息。 然而,AJAX調用不會導致新的文本文件的寫作。

從我的javascript文件的相關部分:

$.ajax({
    type: "POST",
    url: "jq.php",
    data: {
        'myString': "blahblah",
    },
    success: function(data) {
        alert('worked');
    },
    error: function(){
        alert('failed');
    }
});

php文件:

<?php
$file=fopen("welcome.txt","w");
$str = "let's hope this works.";
fwrite($file, $str);
fclose($file);
?>

我還嘗試將以上內容包裝在:if($ _POST ['ajax']){...}中。

為了進行調試,請不要從命令行運行腳本,而只需在瀏覽器中直接打開它即可。 當您使用命令行時,您是以用戶身份(可能是“ root”)執行腳本,但是如果從瀏覽器中調用該腳本,則由apache(或您使用的任何網絡服務器)執行它是自己的用戶。

最有可能的是, 您自己的用戶帳戶具有寫權限,但apache-user沒有權限 -因此命令行可以使用,但瀏覽器的調用則沒有。

順便說一句:這並不是替換mongo-db(或任何其他數據庫)交互的好測試案例,您不必擔心文件系統權限問題,而可以遇到其他數百個問題。

您應該始終使用:

$file=fopen("welcome.txt","w");
if ($file) { // because fopen can return FALSE on error
  $str = "let's hope this works.";
  fwrite($file, $str);
  fclose($file);
}
else {
  // something wrong!
}

參考

編輯還檢查E_WARNING-它可以向您顯示問題,您可以通過error_reporting(E_ALL)激活它 如果服務器禁用了它,或者在php日志文件中查找錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM