2017-03-17 12 views
5

मैं कोणीय 2 के साथ डेटा पोस्ट करने का प्रयास करता हूं लेकिन जब मैं पोस्ट करने की कोशिश कर रहा हूं तो मेरे पास 400 खराब अनुरोध है ... डाकिया में परीक्षण के साथ, हमेशा कुछ ठीक है, मेरे पास 200 है और सफलताangular2 में फॉर्म-डेटा के साथ पोस्ट कैसे भेजें

I have a 200 and success...

लेकिन, angular2

with angular2

साथ मैं एक 400 गलत अनुरोध मैं गलत क्या कर रहा हूँ है? धन्यवाद !

मेरा कोड।

userAddReview(paramsObj) { 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json; charset=UTF-8'); 
    let params = this.util.transformRequest(paramsObj); 
    console.log('sending request'); 
    return this.authHttp.post(this.wpApiURL + '/users-reviews/reviews?' + params, JSON.stringify({}), { headers: headers }) 
     .map(
      res => { 
       let newReview = res.json(); 
       this.reviews.push(newReview); 
       console.log(this.reviews); 
       return newReview; 
      } 
     ); 
} 

पोस्ट घटक:

submitReview(form) { 
    console.log(this.review, form); 
    let params = { 
     id: this.review.post, 
     user_id: this.wp.getCurrentAuthorId(), 
     name: this.wp.getCurrentAuthorId(), 
     email: this.wp.getCurrentAuthorId(), 
     title: this.review.rating_title, 
     description: this.review.rating_comment, 
     rating:  this.review.rating_score, 
    }; 
    console.log("Review", params); 
    this.review.author = this.wp.getCurrentAuthorId(); 
    this.wp.userAddReview(params) 
      .subscribe(
       data => { 
        this.statusMessage = "Review added successfully!"; 
        //clear form 
        form.reset(); 
       }, 
       error => { 
        console.log(error._body); 
        this.statusMessage = error._body; 
       } 
    ); 

टेम्पलेट: सेवा API कॉल करने के लिए

<form name="reviewForm" #reviewForm="ngForm" novalidate *ngIf="showPanel()"> 
    <div *ngIf="!reviewText.valid && (reviewText.dirty || reviewText.touched)" class="alert alert-danger padding">review is required</div> 

    <div class="padding">{{statusMessage}}</div> 
    <ion-input type="text" [(ngModel)]="review.rating_score" #reviewScore="ngModel" name="reviewScore" placeholder="enter your review score..." required></ion-input> 
    <ion-input type="text" [(ngModel)]="review.rating_title" #reviewTitle="ngModel" name="reviewTitle" placeholder="enter your review title..." required></ion-input> 
    <ion-textarea 
     [(ngModel)]="review.rating_comment" 
     #reviewText="ngModel" 
     name="reviewText" 
     type="text" 
     rows="2" 
     placeholder="enter your review..." 
     required 
     > 
    </ion-textarea> 

    <ion-grid> 
     <ion-row> 
      <ion-col *ngIf="!isEditMode"><button ion-button block (click)="submitReview(reviewForm)" [disabled]="!reviewForm.valid">Add</button></ion-col> 
      <ion-col *ngIf="isEditMode"><button ion-button block (click)="updateReview(reviewForm)" [disabled]="!reviewForm.valid">Update</button></ion-col> 
      <ion-col width-33><button ion-button block (click)="onCancel()">Cancel</button></ion-col> 
     </ion-row> 
    </ion-grid> 

</form> 

<p *ngIf="!showPanel() && auth.authenticated()" (click)="isEditing = true;">Add Review</p> 
<p *ngIf="!auth.authenticated()" (click)="reviewFormNotAuthClicked()">Add Review (login required)</p> 
+0

मैं पहले से ही कुछ इस तरह का जवाब ... मुझे उस पता करते हैं ... – n00dl3

+0

हाँ, [यहां यह है] (http://stackoverflow.com/questions/41163706/read-angular2-post-data-in-php/41164367#41164367) – n00dl3

उत्तर

2

क्रिस हैडर के साथ पैरामीटर भेजने के लिए, नीचे कोड

let url= `${this.wpApiURLl}users-reviews/reviews`; 
    let params = new URLSearchParams; 
    params.append('id', id); 
    params.append('user_id', user_id); 
return this.authHttp.post(url, { headers:headers, search:params }) 
.map(
      res => { 
       let newReview = res.json(); 
       this.reviews.push(newReview); 
       console.log(this.reviews); 
       return newReview; 
      } 
     ); 
+0

धन्यवाद! लेकिन मुझे एक ही त्रुटि है। अपने कोड के साथ मेरा अनुरोध पेलोड है: {हेडर: {सामग्री प्रकार: [ "application/json; charset = UTF-8"]}, ...} हेडर : {सामग्री प्रकार: [ "application/json; charset = UTF-8 "]} सामग्री प्रकार : [" application/json; charset = UTF-8 "] : " application/json; charset = UTF-8 " खोज : "id = 5 और user_id = 1 और name = 1 और ईमेल = 1 और शीर्षक = sdsd और वर्णन = sdqffqs और रेटिंग = 5" – christophebazin

+0

URLSearchParams का उपयोग करके पैरामीटर असाइन करें पैराम = नए URLSearchParams दें; params.append ('id', id); params.append ('user_id', user_id); और शीर्षलेखों के साथ पैराम भेजें –

+0

धन्यवाद! मैंने कोशिश की, लेकिन यह काम नहीं करता है, अगले संदेश सीएफ। – christophebazin

1
अनुरोध से

और छवि से, ऐसा लगता है कि आप अनुरोध के शरीर के बजाय यूआरएल के माध्यम से फॉर्म डेटा भेज रहे हैं। बदलें:

return this.authHttp.post(this.wpApiURL + '/users-reviews/reviews?' + params, JSON.stringify({}), { headers: headers }) 

करने के लिए:

return this.authHttp.post(this.wpApiURL + '/users-reviews/reviews', params, { headers: headers }) 

URLSearchParams वस्तु के रूप में पैरामीटर सेट करने के लिए याद रखें। let params = new URLSearchParams()

+0

स्ट्रज को हटाने के बावजूद, सूरज धन्यवाद, समस्या अभी भी यहां है। – christophebazin

+0

URLSearchParams के रूप में पैरा सेट करें और शरीर –

+0

के रूप में भेजें, मैंने कोशिश की, मैं पिछले संदेश पर कोड पोस्ट करता हूं, लेकिन मेरा बचाव पेलोड खाली है। – christophebazin

1

@Venkateswaran, वास्तव में बेहतर कुछ भी नहीं:

let params = new URLSearchParams; 
    params.append('id', '5'); 
    params.append('user_id', '1'); 
    console.log('sending request'); 
    return this.authHttp.post(url, { search:params }) 
     .map(
      res => { 
       let newReview = res.json(); 
       this.reviews.push(newReview); 
       console.log(this.reviews); 
       return newReview; 
      } 
     ) 
     .subscribe(
       data => { 
        this.statusMessage = "Review added successfully!"; 
        //clear form 
        form.reset(); 
       }, 
       error => { 
        console.log(error._body); 
        this.statusMessage = error._body; 
       } 
    ); 
} 

और अनुरोध paylod खाली है:

{ 
    "search": { 
    "rawParams": "", 
    "queryEncoder": {}, 
    "paramsMap": {} 
    } 
} 
संबंधित मुद्दे