###実現したい事
Ajax通信を使って複数のPHPを実行させたいのですが上手くいきません。最初はただ単にAjax通信を2つ連続で記述していただけなのですが、それだとブラウザで実行した時に1つ目のAjaxで指定されたURLのPHPは間違いなく実行されるのですが、2つ目のAjaxで指定されたURLのPHPは実行されたりされなかったりとバラバラです。
サイトを参考に以下のソースを書いてブラウザ上で実行してみたのですが、PHPは2つとも実行されませんでした。解決策が分かる方回答お願いします。
###該当ソース
JavaScript
1// 2つのリクエストURL(必要であればデータも)を用意します 2var request = [ 3 { url: url1, data: {"abc":"abc", 4 "xyz":"xyz"}}, 5 { url: url2, data: {"def":"def", 6 "uvw":"uvw"}}]; 7var jqXHRList = []; 8// Ajaxのリクエスト処理を作成します 9for (var i = 0; i < request.length; i++) { 10 jqXHRList.push($.ajax({ 11 type: "POST", 12 contentType: "application/json", 13 url: request[i].url, 14 data: request[i].data 15 })); 16} 17// 非同期処理を実行します 18$.when.apply($, jqXHRList).done(function () { 19 // 1つ目のURLの処理の結果を受け取ります 20 var userId = arguments[0][0]; 21 // 2つ目のURLの処理の結果を受け取ります 22 var itemId = arguments[1][0]; 23}).fail(function (ex) { 24 // サーバー側での処理に失敗した際に、呼び出されます 25 alert("Ajax通信に失敗しました"); 26});
PHP
1<?php 2$a = isset($_POST['abc']) ? $_POST['abc']: null; 3$x= isset($_POST['xyz']) ? $_POST['xyz']: null; 4 $file = fopen($a.$x.".txt", "w"); 5 fclose($file); 6?>
###以前のソース
JavaScript
1$.ajax({ 2 url: url1, 3 type: "POST", 4 data: {"abc":"abc", 5 "xyz":"xyz"} 6 }); 7 8 $.ajax({ 9 url: url2, 10 type: "POST", 11 data: {"def":"def", 12 "uvw":"uvw"} 13 });
このソースだと1つ目のURLのPHPは確実に実行されるのですが、2つ目のURLのPHPは実行されたりされなかったりとまちまちです。実行されてるか否かの判定はPHPが実行されたらテキストファイルが作成されるので、ファイルがされているか否かで判別しています。