1

おはよう!

この関数をベースとして使用し、phpをサーブサイド言語として使用して、小さなAJAXアプリケーションを作成しています。

これが関係するjavascriptコードです

var dati = {};
dati.nome = d.getElementById('nome').value;
dati.cognome = d.getElementById('cognome').value;
console.log(dati);
url = "post.php";
jsonToPost = dati;
console.log(url);

processResponse = function(responseText){
    console.log(responseText);
    d.getElementById('response').innerHTML = responseText;
}
_SU3.postAjax(url, processResponse, jsonToPost);
});

そして、これが私のphpコードで、ajaxをテストするためのポストプロセッサです。

<?php
if(isset($_POST['nome'])){

$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$data['nome'] = $nome;
$data['cognome'] = $cognome;

$data = json_encode($data);

echo $data;
} else {
    echo "Errore!";
}
?>

ajaxRequestからの応答は「Errore!」です。これは、スクリプトに何も投稿していないことを意味します。

明らかな間違いを見逃していますか?または私が完全に間違っていることがありますか?

_SU3.ajax()関数(参照用にこれを参照)は正常に機能しているので、機能しないことに驚いています

---ファイアバグの応答を広告するために編集---私は正しいものを投稿したことを願っています

request headers:
POST /~francesco/post.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/2010010 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/~francesco/ajax.html
Content-Length: 26
Pragma: no-cache
Cache-Control: no-cache

スクリーンショット のスクリーンショットには他の情報があります。

4

2 に答える 2

3

次の行を置き換えることができます。

ajaxRequest.send("data=" + encodeURIComponent(data));

_SU3.postAjaxで:

ajaxRequest.send(data);

次に、3番目の引数(jsonToPost)を次のような文字列として送信します。

"nome=arg1&cognome=arg2"

例えば:

"nome="+d.getElementById("nome").value + "&cognome="+d.getElementById("cognome").value`
于 2013-01-22T17:27:14.170 に答える
2

puckipediaが示唆しているように、送信するオブジェクトをクエリ文字列としてエンコードする必要があります。次のメソッドは、渡されたオブジェクトに基づいてパラメータ文字列を作成します。

_SU3.postAjax = function(url, callback, data) {

   var parameters = '';

   for (var p in data){
     parameters  += p + '=' + encodeURIComponent(data[p]) + '&';
   }

   var ajaxRequest = _SU3.getAjaxRequest(callback);
   ajaxRequest.open("POST", url, true);
   ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   ajaxRequest.setRequestHeader("Connection", "close");
   ajaxRequest.send(parameters);
}

提供したリンクで提案されている関数は、jsオブジェクトではなく、JSONを渡すことを前提としていました。

注:投稿したサーバーコードは、データを正しく解釈する必要があります。

$nome = $_POST['nome'];
于 2013-01-22T17:54:57.933 に答える