-1

私が抱えている問題は、単純な ajax メール スクリプトにあります。

私は次のようにうまく動作しています:

PHP スニペット:

if(mail($to,$subject,$message,$headers)){
echo "success";
}

そして、ここで処理される ajax コードに戻ります。

         if($.trim(data) == "success"){
           // do the success stuff
         }else{
           // doo the fail stuff
         }

私の懸念は、jquery コードの "trim" がすべてのバージョンのエクスプローラーでサポートされていないことです。だから私は、すでにトリミングされた "success" という文字列を php に返すようにしたいと思います。しかし、以下に示すように変更すると、期待どおりに機能せず、ajax で失敗関数が実行されます..?

修正されたphp:

if(mail($to,$subject,$message,$headers)){
$success = trim("success");
echo $success;
}

修正された Ajax :

     if(data == "success"){
         // do success stuff does not happen anymore
     }else{
         // now it always does fail stuff, so comparison is always false
     }

ajaxではなくphpでトリミングを行っているのはなぜですか..?

4

3 に答える 3

1

これを試してみてください... ajaxで

$('#err_register').html("Data:"+data+"Display");
var resultData=jQuery.trim(data);

if(resultData == "success"){
         // do success stuff does not happen anymore
}else{
         // now it always does fail stuff, so comparison is always false
}
于 2012-04-27T08:17:35.497 に答える
0

あなたの問題は、文字列「成功」ではありません。トリミングは、文字列の先頭と末尾からスペースと空白文字 (改行など) を削除するだけです。そして「成功」にはそのようなものはないので、何もしません。ただし、 JavaScript 側でトリミングが機能する場合は、PHP がいくつかの空白文字を生成している必要があるため、応答に表示されます。しかし、これはあなたが投稿したコードにはなく、作業「成功」に問題はありません。コードを調べて、改行/スペース/白い文字のソースを見つける必要があります。

通常、問題は Unicode BOM マーク (それを調べて、存在するかどうかを表示できるエディターで PHP ファイルを開く) または PHP ファイルの末尾にある改行 (これらを削除する) にあります。

于 2012-04-27T08:16:32.157 に答える
0

jquery.ajax を使用すると、成功/完了/失敗のコールバック関数を指定できます。jquery 呼び出しは、mail 関数を実行して true または false を返す関数である可能性があります。その後、成功関数で戻り値を確認できます。

ここでチェックしてください

于 2012-04-27T08:16:52.623 に答える